curl --request GET \
--url 'https://api-prod.usefini.com/v2/fix-review/interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/events/f61a9a11-2c3b-4704-8f57-7078854d87cf/session/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
interaction_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
event_id = "f61a9a11-2c3b-4704-8f57-7078854d87cf"
response = requests.get(
f"https://api-prod.usefini.com/v2/fix-review/interactions/{interaction_id}/events/{event_id}/session/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
session = response.json()
const interactionId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const eventId = "f61a9a11-2c3b-4704-8f57-7078854d87cf";
const response = await fetch(
`https://api-prod.usefini.com/v2/fix-review/interactions/${interactionId}/events/${eventId}/session/public`,
{ headers: { Authorization: "Bearer fini_your_api_key" } }
);
const session = await response.json();
{
"id": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"targetUserEventId": "2d3d5f6d-0fbc-4a6d-874d-4e2c632f124a",
"status": "active",
"publishedIterationId": null,
"publishedAt": null,
"closedAt": null,
"closedReason": null,
"createdAt": "2026-07-21T12:30:00.000Z",
"updatedAt": "2026-07-21T12:30:00.000Z",
"originalAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"latestIteration": {
"id": "55ce8421-3da6-49f7-af02-b0f23458437d",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"previousIterationId": null,
"backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
"replayInteractionId": null,
"replayEventId": null,
"iterationNumber": 1,
"status": "queued",
"feedbackNote": "Explain the cancellation deadline.",
"summary": null,
"confidence": null,
"error": null,
"publishedAt": null,
"startedAt": null,
"completedAt": null,
"createdAt": "2026-07-21T12:30:00.100Z",
"updatedAt": "2026-07-21T12:30:00.100Z",
"oldAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"newAnswerSnapshot": null,
"changes": []
},
"iterations": [
{
"id": "55ce8421-3da6-49f7-af02-b0f23458437d",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"previousIterationId": null,
"backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
"replayInteractionId": null,
"replayEventId": null,
"iterationNumber": 1,
"status": "queued",
"feedbackNote": "Explain the cancellation deadline.",
"summary": null,
"confidence": null,
"error": null,
"publishedAt": null,
"startedAt": null,
"completedAt": null,
"createdAt": "2026-07-21T12:30:00.100Z",
"updatedAt": "2026-07-21T12:30:00.100Z",
"oldAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"newAnswerSnapshot": null,
"changes": []
}
]
}
null
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
Conversations
Get active fix-review session
Get the active fix-review session and iteration history for one Fini response.
GET
/
v2
/
fix-review
/
interactions
/
{id}
/
events
/
{eventId}
/
session
/
public
curl --request GET \
--url 'https://api-prod.usefini.com/v2/fix-review/interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/events/f61a9a11-2c3b-4704-8f57-7078854d87cf/session/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
interaction_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
event_id = "f61a9a11-2c3b-4704-8f57-7078854d87cf"
response = requests.get(
f"https://api-prod.usefini.com/v2/fix-review/interactions/{interaction_id}/events/{event_id}/session/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
session = response.json()
const interactionId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const eventId = "f61a9a11-2c3b-4704-8f57-7078854d87cf";
const response = await fetch(
`https://api-prod.usefini.com/v2/fix-review/interactions/${interactionId}/events/${eventId}/session/public`,
{ headers: { Authorization: "Bearer fini_your_api_key" } }
);
const session = await response.json();
{
"id": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"targetUserEventId": "2d3d5f6d-0fbc-4a6d-874d-4e2c632f124a",
"status": "active",
"publishedIterationId": null,
"publishedAt": null,
"closedAt": null,
"closedReason": null,
"createdAt": "2026-07-21T12:30:00.000Z",
"updatedAt": "2026-07-21T12:30:00.000Z",
"originalAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"latestIteration": {
"id": "55ce8421-3da6-49f7-af02-b0f23458437d",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"previousIterationId": null,
"backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
"replayInteractionId": null,
"replayEventId": null,
"iterationNumber": 1,
"status": "queued",
"feedbackNote": "Explain the cancellation deadline.",
"summary": null,
"confidence": null,
"error": null,
"publishedAt": null,
"startedAt": null,
"completedAt": null,
"createdAt": "2026-07-21T12:30:00.100Z",
"updatedAt": "2026-07-21T12:30:00.100Z",
"oldAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"newAnswerSnapshot": null,
"changes": []
},
"iterations": [
{
"id": "55ce8421-3da6-49f7-af02-b0f23458437d",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"previousIterationId": null,
"backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
"replayInteractionId": null,
"replayEventId": null,
"iterationNumber": 1,
"status": "queued",
"feedbackNote": "Explain the cancellation deadline.",
"summary": null,
"confidence": null,
"error": null,
"publishedAt": null,
"startedAt": null,
"completedAt": null,
"createdAt": "2026-07-21T12:30:00.100Z",
"updatedAt": "2026-07-21T12:30:00.100Z",
"oldAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"newAnswerSnapshot": null,
"changes": []
}
]
}
null
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
Returns the active fix-review session for one Fini response, including every iteration, generated recommendation, and answer replay. Returns JSON
For prompt suggestions,
null when the response has no active session.
Headers
string
required
Bearer token containing your Fini workspace API key. Format:
Bearer fini_... The key needs read scope.Path parameters
string
required
Conversation ID containing the reviewed response.
string
required
ID of the Fini response targeted by the review session. The event must belong to the conversation and have a linked user event.
Request example
curl --request GET \
--url 'https://api-prod.usefini.com/v2/fix-review/interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/events/f61a9a11-2c3b-4704-8f57-7078854d87cf/session/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
interaction_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
event_id = "f61a9a11-2c3b-4704-8f57-7078854d87cf"
response = requests.get(
f"https://api-prod.usefini.com/v2/fix-review/interactions/{interaction_id}/events/{event_id}/session/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
session = response.json()
const interactionId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const eventId = "f61a9a11-2c3b-4704-8f57-7078854d87cf";
const response = await fetch(
`https://api-prod.usefini.com/v2/fix-review/interactions/${interactionId}/events/${eventId}/session/public`,
{ headers: { Authorization: "Bearer fini_your_api_key" } }
);
const session = await response.json();
Response
Returns aFixReviewSession object or JSON null. iterations is ordered by iterationNumber descending, and latestIteration duplicates its first item for convenient polling.
{
"id": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"targetUserEventId": "2d3d5f6d-0fbc-4a6d-874d-4e2c632f124a",
"status": "active",
"publishedIterationId": null,
"publishedAt": null,
"closedAt": null,
"closedReason": null,
"createdAt": "2026-07-21T12:30:00.000Z",
"updatedAt": "2026-07-21T12:30:00.000Z",
"originalAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"latestIteration": {
"id": "55ce8421-3da6-49f7-af02-b0f23458437d",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"previousIterationId": null,
"backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
"replayInteractionId": null,
"replayEventId": null,
"iterationNumber": 1,
"status": "queued",
"feedbackNote": "Explain the cancellation deadline.",
"summary": null,
"confidence": null,
"error": null,
"publishedAt": null,
"startedAt": null,
"completedAt": null,
"createdAt": "2026-07-21T12:30:00.100Z",
"updatedAt": "2026-07-21T12:30:00.100Z",
"oldAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"newAnswerSnapshot": null,
"changes": []
},
"iterations": [
{
"id": "55ce8421-3da6-49f7-af02-b0f23458437d",
"companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
"sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"previousIterationId": null,
"backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
"replayInteractionId": null,
"replayEventId": null,
"iterationNumber": 1,
"status": "queued",
"feedbackNote": "Explain the cancellation deadline.",
"summary": null,
"confidence": null,
"error": null,
"publishedAt": null,
"startedAt": null,
"completedAt": null,
"createdAt": "2026-07-21T12:30:00.100Z",
"updatedAt": "2026-07-21T12:30:00.100Z",
"oldAnswerSnapshot": {
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
"originalEventId": null,
"content": "You can cancel from Billing Settings.",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-21T12:20:00.000Z"
},
"newAnswerSnapshot": null,
"changes": []
}
]
}
null
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
FixReviewSession object
FixReviewSession
FixReviewSession
| Field | Type | Description |
|---|---|---|
id | string | Fix-review session ID. |
companyId | string | Workspace ID. |
interactionId | string | Reviewed conversation ID. |
targetEventId | string | Original Fini response under review. |
targetUserEventId | string | null | Linked user event used to replay the response. |
status | string | active, published, or closed. This route only returns an active session. |
publishedIterationId | string | null | Iteration applied from this session, when present. |
publishedAt | string | null | ISO 8601 publication timestamp. |
closedAt | string | null | ISO 8601 close timestamp. |
closedReason | string | null | Reason the session was closed. |
createdAt | string | ISO 8601 creation timestamp. |
updatedAt | string | ISO 8601 last-update timestamp. |
originalAnswerSnapshot | AnswerSnapshot | null | Snapshot of the original response. |
latestIteration | FixIteration | null | Most recent iteration. |
iterations | FixIteration[] | All iterations, newest first. |
FixIteration
FixIteration
| Field | Type | Description |
|---|---|---|
id | string | Iteration ID. |
companyId | string | Workspace ID. |
sessionId | string | Parent session ID. |
interactionId | string | Reviewed conversation ID. |
targetEventId | string | Original Fini response under review. |
previousIterationId | string | null | Previous iteration in the session. |
backgroundJobId | string | null | Processing job ID. |
replayInteractionId | string | null | Conversation created for the replay. |
replayEventId | string | null | Generated answer event from the replay. |
iterationNumber | number | One-based revision number within the session. |
status | string | queued, generating_changes, replaying, ready, no_change, failed, published, or superseded. |
feedbackNote | string | Feedback supplied when the iteration was created. |
summary | string | null | Generated summary of the recommendation. |
confidence | string | null | high, medium, low, or null. |
error | string | null | Processing error for a failed iteration. |
publishedAt | string | null | ISO 8601 publication timestamp. |
startedAt | string | null | ISO 8601 processing-start timestamp. |
completedAt | string | null | ISO 8601 completion timestamp. |
createdAt | string | ISO 8601 creation timestamp. |
updatedAt | string | ISO 8601 last-update timestamp. |
oldAnswerSnapshot | AnswerSnapshot | null | Answer used as the baseline for this iteration. |
newAnswerSnapshot | AnswerSnapshot | null | Answer generated by the replay. |
changes | FixChange[] | Suggested prompt, knowledge, or rule changes. |
AnswerSnapshot
AnswerSnapshot
| Field | Type | Description |
|---|---|---|
interactionId | string | Conversation containing the answer. |
eventId | string | Answer event ID. |
originalEventId | string | null | Optional original event referenced by a replay event, when available. |
content | string | null | Answer content. |
role | string | Event role. The reviewed answer is normally finibot. |
type | string | Event type. |
createdAt | string | ISO 8601 event timestamp. |
FixChange
FixChange
| Field | Type | Description |
|---|---|---|
id | string | Change ID. |
companyId | string | Workspace ID. |
sessionId | string | Parent session ID. |
iterationId | string | Parent iteration ID. |
interactionId | string | Reviewed conversation ID. |
targetEventId | string | Reviewed Fini response ID. |
position | number | Zero-based display order within the iteration. |
recommendationOutcome | string | change_recommended, already_fixed, or no_actionable_fix. |
failureClass | string | Classified cause, such as prompt_routing, kb_article_missing, or rule_wrong_action. |
targetEntity | string | prompt, kb_article, or rule. |
targetId | string | null | Existing target ID, or null for a new knowledge article. |
draftArticleId | string | null | Draft article created to preview a knowledge recommendation. |
operation | string | create or update. |
reason | string | Explanation for the recommendation. |
suggested | object | Entity-specific suggested content. See Suggested object. |
contentIssueKind | string | null | For knowledge-content defects: incomplete, stale, wrong, or null. |
displayLocation | DisplayLocation | null | Human-readable prompt location metadata. |
createdAt | string | ISO 8601 creation timestamp. |
updatedAt | string | ISO 8601 last-update timestamp. |
DisplayLocation
DisplayLocation
| Field | Type | Description |
|---|---|---|
section | string | null | Prompt section: planning, guideline, channel, or null. |
promptLabel | string | null | Human-readable prompt label. |
sectionName | string | null | Human-readable section name. |
subsectionName | string | null | Human-readable subsection name. |
Suggested object
Thesuggested shape depends on targetEntity and operation:
| Target | Operation | Fields |
|---|---|---|
prompt | update | section, sectionId, subsectionId, text |
prompt | create | section, sectionId, title, text |
kb_article | create or update | title, agentInstruction, mainKnowledge, questions, keywords, escalation |
rule | update | currentFlowConfigJson and proposedFlowConfigJson |
section is planning, guideline, or channel. Knowledge questions and keywords are string arrays, and escalation is boolean. Rule flow configurations are JSON-encoded strings; currentFlowConfigJson can be null.
Fix-change enum values
failureClass can be:
prompt_routing,prompt_style,prompt_logic, orprompt_conflictkb_article_missing,kb_article_search_failed, orkb_article_content_defectrule_false_trigger,rule_missed_trigger,rule_wrong_action, orrule_conflict
recommendationOutcome can be change_recommended, already_fixed, or no_actionable_fix. targetEntity can be prompt, kb_article, or rule.
Errors
400 Bad Request
400 Bad Request
The event does not belong to the conversation, is not Fini-authored, or has no linked user event for replay.
401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid.
403 Forbidden
403 Forbidden
The API key does not include the
read scope required for this route.404 Not Found
404 Not Found
The conversation or target event does not exist in the workspace.
500 Internal Server Error
500 Internal Server Error
Fini could not load the fix-review session or its related records.
Was this page helpful?
⌘I

