FruxonDocs
ApiFruxon channel

Forks a real conversation into a fresh sandbox session, seeded with its history.

Point at the agent turn that answered badly (or the customer turn to re-send) and this opens a sandbox session already holding every turn the agent had loaded when it produced that reply. The customer message itself comes back as `prefillText` rather than being seeded, so the caller sends it — verbatim or edited — as the first forked turn and compares. The copied history is frozen, but the forked run's tools execute for real: sandbox mode hard-blocks channel sends and memory writes, not integration writes. 400 when the anchor is not part of a human-facing exchange, when its run was a trigger or scheduled fire (no counterpart to speak as), or when no customer turn precedes it.

POST
/v1/tenants/{tenant}/fruxon/sessions:forkConversation
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

tenant*string

The tenant identifier

The agent that owns the conversation and the transcript row to fork at.

agentId?string

The agent that owns the conversation. Named explicitly (rather than derived from the anchor) so the controller can assert access before any row is read — an anchor belonging to another agent then reads as not found.

anchorMessageId?integer

The transcript row the operator clicked, as returned in TopicMessageResponse.Id. Either the agent turn that answered badly, or the customer turn to re-send.

Formatint64
[key: string]?never

Response Body

curl -X POST "https://api.fruxon.com/v1/tenants/string/fruxon/sessions:forkConversation" \  -H "Content-Type: application/json" \  -d '{}'
{
  "sessionId": "string",
  "agentId": "string",
  "participantId": "00000000-0000-0000-0000-000000000000",
  "networkId": "00000000-0000-0000-0000-000000000000",
  "sourceSessionId": "string",
  "targetSessionId": "string",
  "topicId": "00000000-0000-0000-0000-000000000000",
  "flow": "string",
  "copiedMessages": 0,
  "prefillText": "string",
  "prefillOccurredAt": 0
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}