> ## 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 replay events
> Fetch the events for one replay conversation.
Returns the formatted events for one replay conversation. Use this after [Get replay](/en/api-reference/get-replay) when you need the replayed messages and execution details rather than only the replay conversation metadata.
## 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>
Replay conversation ID whose events you want to fetch.
</ParamField>
<RequestExample>
~~~bash cURL theme={null}
curl --request GET \
--url 'https://api-prod.usefini.com/v2/replays/9d4bbcf7-e7e1-44a6-9a64-ff0a12dfe625/events/public' \
--header 'Authorization: Bearer fini_your_api_key'
~~~
~~~python Python theme={null}
import requests
replay_id = "9d4bbcf7-e7e1-44a6-9a64-ff0a12dfe625"
response = requests.get(
f"https://api-prod.usefini.com/v2/replays/{replay_id}/events/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
events = response.json()
~~~
~~~javascript Node.js theme={null}
const replayId = "9d4bbcf7-e7e1-44a6-9a64-ff0a12dfe625";
const response = await fetch(
`https://api-prod.usefini.com/v2/replays/${replayId}/events/public`,
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const events = await response.json();
~~~
</RequestExample>
## Response
Returns an array of formatted event objects.
<ResponseField name="id" type="string">
Event ID.
</ResponseField>
<ResponseField name="interactionId" type="string">
Replay conversation ID that owns the event.
</ResponseField>
<ResponseField name="role" type="enum">
Event sender role, such as `user` or `finibot`.
</ResponseField>
<ResponseField name="content" type="string">
Message content for the event, when present.
</ResponseField>
<ResponseField name="originalEventId" type="string">
Original conversation event copied into or referenced by the replay, when present.
</ResponseField>
<ResponseExample>
~~~json 200 OK theme={null}
[
{
"id": "0b3a0bf5-c044-487f-93c3-fd4a8452fe96",
"companyId": "6bc9f4f8-3564-4a9c-8cc0-ea1f1dd66c2d",
"botId": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"interactionId": "9d4bbcf7-e7e1-44a6-9a64-ff0a12dfe625",
"role": "user",
"type": "message",
"createdAt": "2026-07-30T12:18:03.511Z",
"content": "How do refunds work?",
"externalCreatedAt": 1785416132511
},
{
"id": "69e64e28-6fd7-47ab-806d-f573a975188f",
"companyId": "6bc9f4f8-3564-4a9c-8cc0-ea1f1dd66c2d",
"botId": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"interactionId": "9d4bbcf7-e7e1-44a6-9a64-ff0a12dfe625",
"role": "finibot",
"type": "message",
"createdAt": "2026-07-30T12:18:14.904Z",
"content": "Refunds are available within 30 days.",
"originalEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf"
}
]
~~~
</ResponseExample>
## Errors
<AccordionGroup>
<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="500 Internal Server Error" icon="triangle-exclamation">
Fini failed while loading events for the replay conversation.
</Accordion>
</AccordionGroup>
## Related topics
- [Replays](/en/api-reference/replays.md)
- [Get replay](/en/api-reference/get-replay.md)
- [Get event metadata](/en/api-reference/get-event-metadata.md)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.
Replays

