GET /v1/ai/workflow/chat/snapshot
Get the live/pending state of a conversation (refresh-resume): whether a turn is actively running, the pending interrupt card, and the current mode. Excludes the transcript (use /chat/history) and the canvas (use the workflow record).
GET
/v1/ai/workflow/chat/snapshot
Get the live/pending state of a conversation (refresh-resume): whether a turn is actively running, the pending interrupt card, and the current mode. Excludes the transcript (use /chat/history) and the canvas (use the workflow record).
Query Parameters
conversationId
string
required
query
Conversation ID (stable; the V3 chat checkpoint key)
Request Body
application/jsonResponses
200
OK
application/jsoncode
integer
data
object
isActive
boolean
IsActive is true only when a turn is ACTIVELY running, derived from the
LangGraph checkpoint (not the in-process lock). A turn paused at an
interrupt is NOT active — it is waiting for the user.
mode
unknown
Mode is state.values.mode, or null.
pendingInterrupt
unknown
PendingInterrupt is the ASK / clarification / template_gate payload that
drives the "Waiting for your input" card, or null when nothing is pending.
Opaque to Go — passed straight through from caddie to the FE.
message
string
requestId
string
400
Bad Request
curl -X GET 'https://api.example.com/v1/ai/workflow/chat/snapshot?conversationId=string' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{}'
const response = await fetch('https://api.example.com/v1/ai/workflow/chat/snapshot?conversationId=string', { method: 'GET', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({})});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://api.example.com/v1/ai/workflow/chat/snapshot?conversationId=string', headers=headers, json={})print(response.json())
package mainimport ( "fmt" "io" "net/http" "strings")func main() { body := strings.NewReader(`{}`) req, _ := http.NewRequest("GET", "https://api.example.com/v1/ai/workflow/chat/snapshot?conversationId=string", body) req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN") req.Header.Set("Content-Type", "application/json") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() result, _ := io.ReadAll(resp.Body) fmt.Println(string(result))}
200
Response
{ "code": 200, "data": { "isActive": true, "mode": "<unknown>", "pendingInterrupt": "<unknown>" }, "message": "success", "requestId": "<string>"}
API Playground
Try this endpoint
GET
/v1/ai/workflow/chat/snapshot
