Search events by filter criteria
curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/eventSearch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"flowIDs": [
"<string>"
],
"subFlowIDs": [
"<string>"
],
"limit": 100
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/eventSearch"
payload = {
"flowIDs": ["<string>"],
"subFlowIDs": ["<string>"],
"limit": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({flowIDs: ['<string>'], subFlowIDs: ['<string>'], limit: 100})
};
fetch('https://api.cloud.corbado.io/v1/observe/eventSearch', 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.cloud.corbado.io/v1/observe/eventSearch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'flowIDs' => [
'<string>'
],
'subFlowIDs' => [
'<string>'
],
'limit' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cloud.corbado.io/v1/observe/eventSearch"
payload := strings.NewReader("{\n \"flowIDs\": [\n \"<string>\"\n ],\n \"subFlowIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cloud.corbado.io/v1/observe/eventSearch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"flowIDs\": [\n \"<string>\"\n ],\n \"subFlowIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/eventSearch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"flowIDs\": [\n \"<string>\"\n ],\n \"subFlowIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}"
response = http.request(request)
puts response.read_body{
"events": [
{
"id": "<string>",
"flowID": "<string>",
"sessionID": "<string>",
"batchID": "<string>",
"type": "predefined",
"name": "<string>",
"data": {},
"createdMs": 123,
"subFlowID": "<string>",
"metadata": {
"trackingSourcePath": "<string>"
}
}
],
"totalCount": 123
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Events
Search events by filter criteria
Finds SDK tracking events for selected flows. Use the flow IDs returned by flow search to inspect the event timeline behind those flows.
Results are ordered as a stable timeline, oldest first (by creation time), and
capped at limit.
Required API key permission: observe:events:read.
POST
/
observe
/
eventSearch
Search events by filter criteria
curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/eventSearch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"flowIDs": [
"<string>"
],
"subFlowIDs": [
"<string>"
],
"limit": 100
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/eventSearch"
payload = {
"flowIDs": ["<string>"],
"subFlowIDs": ["<string>"],
"limit": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({flowIDs: ['<string>'], subFlowIDs: ['<string>'], limit: 100})
};
fetch('https://api.cloud.corbado.io/v1/observe/eventSearch', 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.cloud.corbado.io/v1/observe/eventSearch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'flowIDs' => [
'<string>'
],
'subFlowIDs' => [
'<string>'
],
'limit' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cloud.corbado.io/v1/observe/eventSearch"
payload := strings.NewReader("{\n \"flowIDs\": [\n \"<string>\"\n ],\n \"subFlowIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cloud.corbado.io/v1/observe/eventSearch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"flowIDs\": [\n \"<string>\"\n ],\n \"subFlowIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/eventSearch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"flowIDs\": [\n \"<string>\"\n ],\n \"subFlowIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}"
response = http.request(request)
puts response.read_body{
"events": [
{
"id": "<string>",
"flowID": "<string>",
"sessionID": "<string>",
"batchID": "<string>",
"type": "predefined",
"name": "<string>",
"data": {},
"createdMs": 123,
"subFlowID": "<string>",
"metadata": {
"trackingSourcePath": "<string>"
}
}
],
"totalCount": 123
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Authorizations
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Body
application/json
Flow IDs to fetch events for (format flw-<number>).
Optional exact subflow owners, intersected with flowIDs. Include descendant IDs explicitly for a subtree.
Maximum number of events to return. Defaults to 100, maximum 10000.
Required range:
1 <= x <= 10000Was this page helpful?