Skip to main content
POST
/
study-status-events
/
search
Poll study status-change events in your workspace
curl --request POST \
  --url https://api.rallyuxr.com/api/public/v1/study-status-events/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "filter": {
    "from": "2025-01-01T00:00:00Z",
    "to": "2025-02-01T00:00:00Z",
    "studyIds": [
      "<string>"
    ],
    "teamIds": [
      "<string>"
    ],
    "studyTypes": []
  },
  "pageInfo": {
    "size": 10
  }
}
'
import requests

url = "https://api.rallyuxr.com/api/public/v1/study-status-events/search"

payload = {
"filter": {
"from": "2025-01-01T00:00:00Z",
"to": "2025-02-01T00:00:00Z",
"studyIds": ["<string>"],
"teamIds": ["<string>"],
"studyTypes": []
},
"pageInfo": { "size": 10 }
}
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({
filter: {
from: '2025-01-01T00:00:00Z',
to: '2025-02-01T00:00:00Z',
studyIds: ['<string>'],
teamIds: ['<string>'],
studyTypes: []
},
pageInfo: {size: 10}
})
};

fetch('https://api.rallyuxr.com/api/public/v1/study-status-events/search', 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.rallyuxr.com/api/public/v1/study-status-events/search",
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([
'filter' => [
'from' => '2025-01-01T00:00:00Z',
'to' => '2025-02-01T00:00:00Z',
'studyIds' => [
'<string>'
],
'teamIds' => [
'<string>'
],
'studyTypes' => [

]
],
'pageInfo' => [
'size' => 10
]
]),
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.rallyuxr.com/api/public/v1/study-status-events/search"

payload := strings.NewReader("{\n \"filter\": {\n \"from\": \"2025-01-01T00:00:00Z\",\n \"to\": \"2025-02-01T00:00:00Z\",\n \"studyIds\": [\n \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"studyTypes\": []\n },\n \"pageInfo\": {\n \"size\": 10\n }\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.rallyuxr.com/api/public/v1/study-status-events/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter\": {\n \"from\": \"2025-01-01T00:00:00Z\",\n \"to\": \"2025-02-01T00:00:00Z\",\n \"studyIds\": [\n \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"studyTypes\": []\n },\n \"pageInfo\": {\n \"size\": 10\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.rallyuxr.com/api/public/v1/study-status-events/search")

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 \"filter\": {\n \"from\": \"2025-01-01T00:00:00Z\",\n \"to\": \"2025-02-01T00:00:00Z\",\n \"studyIds\": [\n \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"studyTypes\": []\n },\n \"pageInfo\": {\n \"size\": 10\n }\n}"

response = http.request(request)
puts response.read_body
{
  "results": [
    {
      "id": "<string>",
      "studyId": "<string>",
      "changedBy": "<string>",
      "changedAt": "2023-11-07T05:31:56Z"
    }
  ],
  "total": 123,
  "pageInfo": {
    "hasNextPage": true,
    "hasPreviousPage": true,
    "startCursor": "<string>",
    "endCursor": "<string>"
  }
}
{
"errors": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
"Unauthorized"
"Forbidden"
"Too Many Requests"
"Internal Server Error"

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
filter
object
required

Filter for study status-change events. The from/to time window is required.

pageInfo
object

Pagination arguments. Use startCursor from the result of the endCursor of the response to get the next page. Pagination in reverse is not currently supported

Example:
{ "size": 10 }

Response

The study status-change events

results
object[]
required
total
number
required

The total number of items in your workspaces based on your search parameters

pageInfo
object
required

Information about the current page