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": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1747075200000,
"externalCreatedAt": null,
"source": "api",
"channel": "chat",
"status": "Escalated to Human Agent",
"externalId": null,
"url": "https://app.usefini.com/dashboard/inbox/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"subjectPreview": "Where is my order?",
"hasFeedback": false,
"resolved": null,
"userAttributes": {
"email": "customer@example.com"
},
"usedArticles": [
{
"id": "7f5392e5-dc7d-4558-8860-cf3ea4b32f94",
"title": "Track your order",
"documentUrl": null
}
],
"usedSubfolders": [],
"events": [
{
"id": "cc0e1592-4b71-4f57-bf9c-1b10a6b7b71a",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1749640953000,
"role": "user",
"type": "message",
"message": "Where is my order?",
"externalId": null,
"externalCreatedAt": null,
"csatRating": null,
"feedback": null,
"approved": null,
"resolved": null,
"attachments": [],
"tags": [],
"usedArticles": []
},
{
"id": "da370d54-5d2a-4b38-b99d-8b5c5f77bff7",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1749640955000,
"role": "finibot",
"type": "message",
"message": "I can help with that. What is your order number?",
"externalId": null,
"externalCreatedAt": null,
"csatRating": null,
"feedback": null,
"approved": null,
"resolved": null,
"attachments": [],
"tags": [],
"usedArticles": [
{
"id": "7f5392e5-dc7d-4558-8860-cf3ea4b32f94",
"title": "Track your order",
"documentUrl": null
}
]
}
]
}
{
"statusCode": 401,
"message": "Invalid or revoked API key",
"error": "Unauthorized"
}
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
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": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1747075200000,
"externalCreatedAt": null,
"source": "api",
"channel": "chat",
"status": "Escalated to Human Agent",
"externalId": null,
"url": "https://app.usefini.com/dashboard/inbox/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"subjectPreview": "Where is my order?",
"hasFeedback": false,
"resolved": null,
"userAttributes": {
"email": "customer@example.com"
},
"usedArticles": [
{
"id": "7f5392e5-dc7d-4558-8860-cf3ea4b32f94",
"title": "Track your order",
"documentUrl": null
}
],
"usedSubfolders": [],
"events": [
{
"id": "cc0e1592-4b71-4f57-bf9c-1b10a6b7b71a",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1749640953000,
"role": "user",
"type": "message",
"message": "Where is my order?",
"externalId": null,
"externalCreatedAt": null,
"csatRating": null,
"feedback": null,
"approved": null,
"resolved": null,
"attachments": [],
"tags": [],
"usedArticles": []
},
{
"id": "da370d54-5d2a-4b38-b99d-8b5c5f77bff7",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1749640955000,
"role": "finibot",
"type": "message",
"message": "I can help with that. What is your order number?",
"externalId": null,
"externalCreatedAt": null,
"csatRating": null,
"feedback": null,
"approved": null,
"resolved": null,
"attachments": [],
"tags": [],
"usedArticles": [
{
"id": "7f5392e5-dc7d-4558-8860-cf3ea4b32f94",
"title": "Track your order",
"documentUrl": null
}
]
}
]
}
{
"statusCode": 401,
"message": "Invalid or revoked API key",
"error": "Unauthorized"
}
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
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 Approve conversation event 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": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1747075200000,
"externalCreatedAt": null,
"source": "api",
"channel": "chat",
"status": "Escalated to Human Agent",
"externalId": null,
"url": "https://app.usefini.com/dashboard/inbox/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"subjectPreview": "Where is my order?",
"hasFeedback": false,
"resolved": null,
"userAttributes": {
"email": "customer@example.com"
},
"usedArticles": [
{
"id": "7f5392e5-dc7d-4558-8860-cf3ea4b32f94",
"title": "Track your order",
"documentUrl": null
}
],
"usedSubfolders": [],
"events": [
{
"id": "cc0e1592-4b71-4f57-bf9c-1b10a6b7b71a",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1749640953000,
"role": "user",
"type": "message",
"message": "Where is my order?",
"externalId": null,
"externalCreatedAt": null,
"csatRating": null,
"feedback": null,
"approved": null,
"resolved": null,
"attachments": [],
"tags": [],
"usedArticles": []
},
{
"id": "da370d54-5d2a-4b38-b99d-8b5c5f77bff7",
"interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
"createdAt": 1749640955000,
"role": "finibot",
"type": "message",
"message": "I can help with that. What is your order number?",
"externalId": null,
"externalCreatedAt": null,
"csatRating": null,
"feedback": null,
"approved": null,
"resolved": null,
"attachments": [],
"tags": [],
"usedArticles": [
{
"id": "7f5392e5-dc7d-4558-8860-cf3ea4b32f94",
"title": "Track your order",
"documentUrl": null
}
]
}
]
}
{
"statusCode": 401,
"message": "Invalid or revoked API key",
"error": "Unauthorized"
}
{
"statusCode": 403,
"message": "API key does not have the required scope for this operation",
"error": "Forbidden"
}
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?
⌘I

