Anexos e exportação
Converte um arquivo em texto ou imagem para a VI ler e exporta a conversa em DOCX.
O seller pode anexar uma foto, um PDF ou uma planilha à pergunta. O fluxo tem dois passos: você envia o arquivo para POST /attachments, que valida e converte; depois manda o resultado no corpo de Enviar uma mensagem. O arquivo em si não fica guardado.
Tipos aceitos
| Tipo | Extensões | Tamanho máximo | Resultado |
|---|---|---|---|
| Imagem | .png .jpg .jpeg .webp .gif | 20 MB | kind: image, data_url |
| Texto | .txt .md .json .xml .csv .html .htm | 250 KB | kind: text, markdown |
.pdf | 5 MB | kind: text, markdown | |
| Word | .docx .doc | 5 MB | kind: text, markdown |
| Planilha | .xlsx .xls | 5 MB | kind: text, markdown |
| Apresentação | .pptx .ppt | 10 MB | kind: text, markdown |
Vídeos (.mp4, .mov, .avi, .mkv, .webm e semelhantes) são recusados.
Converter um anexo
Valida o arquivo, converte para o formato que a VI lê e devolve o resultado. Imagens viram um data_url base64; documentos viram Markdown (cortado em 200 KB, com a marca (documento truncado) ao final); textos simples vêm dentro de uma cerca de código.
/api/v1/vendor/intelligence/attachmentsSellerConverter um anexo
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um seller (veja Tokens).Corpo da requisição
filefileobrigatóriomultipart/form-data. Os limites estão na tabela de tipos aceitos.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/intelligence/attachments" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@tabela-de-precos.pdf"Resposta
{
"kind": "text",
"markdown": "# Tabela de preços\n\n| SKU | Preço |\n|---|---|\n| A1 | 49,90 |",
"filename": "tabela-de-precos.pdf"
}{ "kind": "image", "data_url": "data:image/png;base64,iVBORw0KGgo...", "filename": "foto.png" }Campos da resposta
kindstringimagetextdata_urlstringimage. Imagem em base64.markdownstringtext. Conteúdo em Markdown.filenamestringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 400 | Não é multipart ou falta o campo file. | {"error":"invalid multipart form"} ou {"error":"file field missing"} |
| 413 | Arquivo acima do limite do tipo. | {"error":"arquivo excede o tamanho máximo permitido"} (devolvido em português) |
| 415 | Extensão não aceita ou vídeo. | {"error":"tipo de arquivo não suportado"} ou {"error":"vídeos não são aceitos"} (devolvido em português) |
| 422 | Arquivo vazio ou ilegível. | {"error":"não consegui ler esse arquivo"} (devolvido em português) |
Exportar a conversa
Gera um documento Word com a conversa (até as primeiras 500 mensagens) e devolve o arquivo binário. Precisa do recurso de exportação ligado em Configurações (enable_docx_export).
/api/v1/vendor/intelligence/sessions/{id}/exportSellerExportar a conversa em DOCX
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um seller (veja Tokens).Parâmetros de caminho
iduuidobrigatórioParâmetros de consulta
formatstringpadrão: docxdocxdocx; qualquer outro valor é recusado.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/intelligence/sessions/$SESSION_ID/export?format=docx" \
-H "Authorization: Bearer $TOKEN"Resposta
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Disposition: attachment; filename="conversation-a74d1e78-338a-4fe4-80be-660daa47296a.docx"
(bytes do arquivo)Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 400 | Formato diferente de docx. | {"error":"intelligence export: unsupported format (expected docx)"} |
| 403 | Exportação desligada na loja. | {"error":"DOCX export is disabled..."} |
| 404 | Sessão inexistente. | {"error":"session not found"} |