Returns private attachment metadata and a newly signed download URL.
/api/conversations/{conversationId}/attachments/{id}Returns private attachment metadata and a newly signed download URL. The attachment must belong to the path conversation and authenticated organization. Visitor bearer callers can access only attachments in their own conversation. The signed URL is temporary and must not be treated as a stable public object URL.
Bearer API key or X-API-Key header.conversations:readautomation_api)Resource identifier.
Resource identifier.
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"id": "66666666-6666-4666-8666-666666666666",
"attachmentId": "66666666-6666-4666-8666-666666666666",
"filename": "invoice-2026.pdf",
"originalName": "invoice-2026.pdf",
"mimeType": "application/pdf",
"size": 18432,
"url": "https://files.example.invalid/private/signed-download"
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}curl --request GET \
'https://api.convor.io/api/conversations/22222222-2222-4222-8222-222222222222/attachments/11111111-1111-4111-8111-111111111111' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/conversations/22222222-2222-4222-8222-222222222222/attachments/11111111-1111-4111-8111-111111111111", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer convor_sk_..."
},
});
const contentType = response.headers.get("content-type") ?? "";
const data = response.status === 204
? null
: contentType.includes("json")
? await response.json()
: contentType.startsWith("text/")
? await response.text()
: await response.blob();
if (!response.ok) {
const message = typeof data === "object" && data !== null
&& "error" in data && typeof data.error === "object"
&& data.error !== null && "message" in data.error
? String(data.error.message)
: "Convor API request failed (" + response.status + ")";
throw new Error(message);
}
console.log(data);Was this page helpful?
Get a fresh signed URL for a private attachment
Creates a fresh signed download URL for one private attachment after verifying the attachment, conversation, visitor when applicable, and organization boundary.
Upload a private conversation attachment
Uploads one private file to a conversation as multipart/form-data using the file field.