Record that a Mist run is still alive
Mist Desktop calls this about every two minutes while a run works.
It stamps run_checked_in_at_ms on every comment the run holds for
the caller: a live root comment that is handed with this run_id
and whose run the caller claimed. Reassigning the comment does not
change who claimed the run. The stamp is a liveness marker, not an
edit, so it does not change lock_version, and a cancel or backstop
that follows still matches the version the caller observed.
A check-in never moves the stamp backwards: one that carries an earlier time than the stored stamp leaves it as it was and still succeeds, because the run still holds the comment. An answer from Mist, which moves the comment to review, clears the stamp.
The caller must be a person, since the run’s claimer is the one user who may check in for it. A token with no user behind it is refused with 403.
A client that sees the stamp go quiet can warn that Mist has not checked in. Nothing is released on silence; a person cancels.
A run that holds no comment for the caller was canceled, answered, or claimed by another admin, or it was claimed before the claimer was recorded. That is a 409, which tells Mist Desktop the run was stopped elsewhere. Subscribers to the theme’s comment stream are told to refetch after a check-in that stamped anything.
curl --request PUT \
--url https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in"
headers = {"Authorization": "Bearer <token>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in', 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.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
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.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in"
req, _ := http.NewRequest("PUT", 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.put("https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"run": {
"run_id": "run_01J8Z3K4QF7M2V9XB6T0RC5HWD",
"checked_in_at_ms": 1789464485000,
"comment_count": 1
},
"status": 200,
"meta": {
"request_uuid": "7c1e9a52-4b3d-4f0e-9d2a-81f6c3b5e240",
"timestamp": "2026-09-15T09:28:05Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "This run no longer holds any comment.",
"details": {
"type": "conflict"
}
},
"status": 409,
"meta": {
"request_uuid": "7c1e9a52-4b3d-4f0e-9d2a-81f6c3b5e240",
"timestamp": "2026-09-15T09:28:05Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Id of the theme whose comments the run holds.
Identity of the run checking in, as allocated when it claimed its comments.
1 - 255^[A-Za-z0-9_-]+$curl --request PUT \
--url https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in"
headers = {"Authorization": "Bearer <token>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in', 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.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
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.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in"
req, _ := http.NewRequest("PUT", 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.put("https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202604/themes/{theme_id}/preview_comments/runs/{run_id}/check-in")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"run": {
"run_id": "run_01J8Z3K4QF7M2V9XB6T0RC5HWD",
"checked_in_at_ms": 1789464485000,
"comment_count": 1
},
"status": 200,
"meta": {
"request_uuid": "7c1e9a52-4b3d-4f0e-9d2a-81f6c3b5e240",
"timestamp": "2026-09-15T09:28:05Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "This run no longer holds any comment.",
"details": {
"type": "conflict"
}
},
"status": 409,
"meta": {
"request_uuid": "7c1e9a52-4b3d-4f0e-9d2a-81f6c3b5e240",
"timestamp": "2026-09-15T09:28:05Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}