curl --request GET \
--url 'https://api-prod.usefini.com/v2/hc-interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
conversation_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
response = requests.get(
f"https://api-prod.usefini.com/v2/hc-interactions/{conversation_id}/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
conversation = response.json()
const conversationId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const response = await fetch(
`https://api-prod.usefini.com/v2/hc-interactions/${conversationId}/public`,
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const conversation = await response.json();
{
"id": "a5221094-72d4-4b9c-8d30-2f785b108bd9",
"botId": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"status": "resolved",
"source": "widget",
"user": {
"name": "Sam Lee",
"email": "[email protected]"
},
"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"
}
Conversations
Get conversation
Fetch one public conversation by ID. Returns the same shape as a single item from List conversations.
GET
/
v2
/
hc-interactions
/
{id}
/
public
curl --request GET \
--url 'https://api-prod.usefini.com/v2/hc-interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
conversation_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
response = requests.get(
f"https://api-prod.usefini.com/v2/hc-interactions/{conversation_id}/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
conversation = response.json()
const conversationId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const response = await fetch(
`https://api-prod.usefini.com/v2/hc-interactions/${conversationId}/public`,
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const conversation = await response.json();
{
"id": "a5221094-72d4-4b9c-8d30-2f785b108bd9",
"botId": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"status": "resolved",
"source": "widget",
"user": {
"name": "Sam Lee",
"email": "[email protected]"
},
"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"
}
Returns one conversation record by ID for the workspace tied to your API key. The response shape is identical to a single entry in List conversations: same fields, same nested
events[] objects, and the same public article, folder, tag, and attachment semantics.
Use List conversations to discover conversation and event IDs. Use Send conversation feedback to rate an event, Create fix-review iteration to analyze a Fini response, or Generate Answer to send a new turn into Fini.
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 to fetch. Get this from List conversations. The public Generate Answer response is event-only, so use the list route if you need to discover a newly created conversation ID.
curl --request GET \
--url 'https://api-prod.usefini.com/v2/hc-interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/public' \
--header 'Authorization: Bearer fini_your_api_key'
import requests
conversation_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
response = requests.get(
f"https://api-prod.usefini.com/v2/hc-interactions/{conversation_id}/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
conversation = response.json()
const conversationId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
const response = await fetch(
`https://api-prod.usefini.com/v2/hc-interactions/${conversationId}/public`,
{
headers: {
Authorization: "Bearer fini_your_api_key",
},
}
);
const conversation = await response.json();
Response
The response is a singlePublicConversation object. See List conversations → PublicConversation for the full field reference and nested object definitions.
{
"id": "a5221094-72d4-4b9c-8d30-2f785b108bd9",
"botId": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"status": "resolved",
"source": "widget",
"user": {
"name": "Sam Lee",
"email": "[email protected]"
},
"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"
}
Current controller behavior: unknown, already-deleted, or inaccessible conversation IDs surface as
500 Internal Server Error on this public route rather than a dedicated 404 Not Found.Errors
401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid. Confirm you are sending
Authorization: Bearer fini_... with the full key.403 Forbidden
403 Forbidden
The API key does not include the
read scope required for this route.500 Internal Server Error
500 Internal Server Error
Fini failed while loading the conversation. Unknown, already-deleted, or workspace-mismatched IDs currently surface here on the public route as well.
Was this page helpful?

