> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Get Refine with AI session
> Get one Refine with AI session by ID, including all iterations and recommendations.
Returns one Refine with AI session by ID. Unlike [Get active Refine with AI session](/en/api-reference/get-active-fix-review-session), this route can retrieve an `active`, `published`, or `closed` session. Use it after [Create Refine with AI iteration](/en/api-reference/create-fix-review-iteration) returns a `sessionId`, or when you need to load a known Refine with AI review session from history.
## Headers
<ParamField header="Authorization" type="string" required>
Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `read` scope.
</ParamField>
## Path parameters
<ParamField path="id" type="string" required>
Conversation ID containing the reviewed response.
</ParamField>
<ParamField path="eventId" type="string" required>
ID of the reviewed Fini response.
</ParamField>
<ParamField path="sessionId" type="string" required>
Refine with AI session ID returned by [Create Refine with AI iteration](/en/api-reference/create-fix-review-iteration).
</ParamField>
## Request example
<RequestExample>
~~~bash cURL theme={null}
curl --request GET \
--url 'https://api-prod.usefini.com/v2/fix-review/interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/events/f61a9a11-2c3b-4704-8f57-7078854d87cf/sessions/91d2d432-b408-4496-920d-24ad6a1b9e87/public' \
--header 'Authorization: Bearer fini_your_api_key'
~~~
~~~python Python theme={null}
import requests
interaction_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
event_id = "f61a9a11-2c3b-4704-8f57-7078854d87cf"
session_id = "91d2d432-b408-4496-920d-24ad6a1b9e87"
response = requests.get(
f"https://api-prod.usefini.com/v2/fix-review/interactions/{interaction_id}/events/{event_id}/sessions/{session_id}/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
session = response.json()
~~~
~~~javascript Node.js theme={null}
const interactionId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const eventId = "f61a9a11-2c3b-4704-8f57-7078854d87cf";
const sessionId = "91d2d432-b408-4496-920d-24ad6a1b9e87";
const response = await fetch(
`https://api-prod.usefini.com/v2/fix-review/interactions/${interactionId}/events/${eventId}/sessions/${sessionId}/public`,
{ headers: { Authorization: "Bearer fini_your_api_key" } }
);
const session = await response.json();
~~~
</RequestExample>
## Response
Returns the same [`FixReviewSession`](/en/api-reference/get-active-fix-review-session#fixreviewsession-object) shape as the active-session route. The response includes `originalAnswerSnapshot`, `latestIteration`, and all `iterations` ordered newest first.
Use `latestIteration.status` to decide whether the fix review is still running or ready to inspect. When it is `ready`, compare `latestIteration.oldAnswerSnapshot` with `latestIteration.newAnswerSnapshot`, then inspect `latestIteration.changes` for generated draft IDs and `rootCause` details. The response shows the proposed fix and replay result; it does not publish the underlying prompt, knowledge, or rule change.
<ResponseExample>
~~~json 200 OK theme={null}
{
"id": "a5221094-72d4-4b9c-8d30-2f785b108bd9",
"botId": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"status": "resolved",
"source": "widget",
"user": {
"name": "Sam Lee",
"email": "customer@example.com"
},
"messages": [
{
"role": "user",
"content": "How do refunds work?",
"createdAt": "2026-07-28T08:55:32.000Z"
},
{
"role": "assistant",
"content": "Refunds are available within 30 days.",
"createdAt": "2026-07-28T08:55:40.000Z"
}
],
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
~~~
</ResponseExample>
## Errors
<AccordionGroup>
<Accordion title="400 Bad Request" icon="circle-exclamation">
The target event is invalid for fix review, or the session does not belong to the conversation and response supplied in the path.
</Accordion>
<Accordion title="401 Unauthorized" icon="lock">
The API key is missing, malformed, revoked, or invalid.
</Accordion>
<Accordion title="403 Forbidden" icon="shield-halved">
The API key does not include the `read` scope required for this route.
</Accordion>
<Accordion title="404 Not Found" icon="ghost">
The conversation, event, or session does not exist in the workspace.
</Accordion>
<Accordion title="500 Internal Server Error" icon="triangle-exclamation">
Fini could not load the session or its related records.
</Accordion>
</AccordionGroup>
## Related topics
- [Create Refine with AI iteration](/en/api-reference/create-fix-review-iteration.md)
- [Overview](/en/api-reference/refine-with-ai.md)
- [Get active Refine with AI session](/en/api-reference/get-active-fix-review-session.md)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.
Refine with AI

