Acknowledge Changes
curl --request POST \
--url https://api.example.com/v0/workspaces/{id}/changes/ackimport requests
url = "https://api.example.com/v0/workspaces/{id}/changes/ack"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/v0/workspaces/{id}/changes/ack', 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.example.com/v0/workspaces/{id}/changes/ack",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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.example.com/v0/workspaces/{id}/changes/ack"
req, _ := http.NewRequest("POST", url, nil)
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.example.com/v0/workspaces/{id}/changes/ack")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/workspaces/{id}/changes/ack")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyWorkspaces
Acknowledge Changes
POST /v0/workspaces/:id/changes/ack — Advance your reader position through a delivered page
POST
/
v0
/
workspaces
/
{id}
/
changes
/
ack
Acknowledge Changes
curl --request POST \
--url https://api.example.com/v0/workspaces/{id}/changes/ackimport requests
url = "https://api.example.com/v0/workspaces/{id}/changes/ack"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/v0/workspaces/{id}/changes/ack', 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.example.com/v0/workspaces/{id}/changes/ack",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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.example.com/v0/workspaces/{id}/changes/ack"
req, _ := http.NewRequest("POST", url, nil)
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.example.com/v0/workspaces/{id}/changes/ack")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/workspaces/{id}/changes/ack")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyAdvances this API key’s acknowledged position to the end of the page delivered by Read Changes. The position only moves forward and never past the delivered page. Only an explicit acknowledgment moves it: loading and reading do not. MCP:
Acknowledging the most recently acknowledged token again is a no-op that returns the same result. Positions are per reader: each API key, and the operator’s browser, keeps its own.
workspace_changes_ack. CLI: rip workspace ack <workspace-id> --delivery-token <token>.
Auth: Authorization: Bearer tr_... (an account API key). {id} is the workspace UUID.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
deliveryToken | string | Yes | The token returned with the page |
Response (201)
{ "ok": true, "data": { "acknowledged": true } }
Errors
| Status | Code | Cause |
|---|---|---|
400 | INVALID_INPUT | Missing deliveryToken |
400 | INVALID_WORKSPACE_DELIVERY | The token is wrong, expired, belongs to another reader, or your access changed since it was issued |
404 | WORKSPACE_NOT_FOUND | No workspace with that id |
403 | WORKSPACE_FORBIDDEN | You are not a member |