Arquivos e análise de referência
Envia arquivos de referência para a conversa, analisa o site de um concorrente e extrai a paleta de uma imagem.
Para a IA acertar, dê referências: o manual de marca em PDF, o logotipo, o site de um concorrente que o lojista admira. Estas rotas preparam essas referências. Os arquivos enviados com um session_id passam a fazer parte do contexto de todas as mensagens daquela sessão.
Enviar arquivo
Recebe um arquivo por multipart/form-data (limite de 20 MB) e o associa à sessão. De PDF e DOCX o texto é extraído para o contexto da IA.
/api/v1/admin/ai-builder/filesAdminEnviar um arquivo de referência
Requer o privilégio manage_theme.
Corpo da requisição
filefileobrigatóriosession_iduuidExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/ai-builder/files" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@manual-de-marca.pdf" \
-F "session_id=f239c911-be44-459f-93b0-6a5be4101918"Resposta
{
"id": "9c1a2b3c-4d5e-4f60-8a7b-0c1d2e3f4a5b",
"session_id": "f239c911-be44-459f-93b0-6a5be4101918",
"file_url": "/uploads/ai-builder/9c1a2b3c-manual-de-marca.pdf",
"file_name": "manual-de-marca.pdf",
"file_type": "application/pdf",
"file_size_bytes": 482113,
"extracted_text": "Paleta principal...",
"extracted_colors": [],
"created_at": "2026-10-11T12:01:00Z"
}Campos da resposta
iduuidsession_idstringfile_urlstringfile_namestringfile_typestringfile_size_bytesintegerextracted_textstringextracted_colorsstring[]created_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Arquivo maior que 20 MB ou formulário inválido. | {"error":"file too large or invalid multipart form","detail":"..."} |
| 400 | Campo file ausente. | {"error":"file is required","detail":"http: no such file"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 500 | Falha de banco de dados ou do provedor de IA. | {"error":"failed to upload file","detail":"..."} |
Excluir arquivo
Remove o registro do arquivo. A IA deixa de usá-lo nas próximas mensagens.
/api/v1/admin/ai-builder/files/{id}AdminExcluir um arquivo de referência
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/ai-builder/files/9c1a2b3c-4d5e-4f60-8a7b-0c1d2e3f4a5b" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"status": "deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 404 | Arquivo não existe. | {"error":"file not found"} |
| 500 | Falha de banco de dados ou do provedor de IA. | {"error":"failed to delete file","detail":"..."} |
Analisar site
Baixa a página (limite de 10 s) e devolve cores dominantes, fontes sugeridas e observações de layout e estilo. Endereços internos ou privados são recusados. Se faltar o esquema, https:// é assumido.
/api/v1/admin/ai-builder/analyze-urlAdminAnalisar o visual de um site
Requer o privilégio manage_theme.
Corpo da requisição
urlstringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/ai-builder/analyze-url" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.exemplo.com.br"
}'Resposta
{
"url": "https://www.exemplo.com.br",
"dominant_colors": [
"#1F2937",
"#B45309"
],
"font_suggestions": [
"Lato",
"Playfair Display"
],
"layout_notes": "Cabeçalho centralizado, hero em tela cheia.",
"style_notes": "Minimalista, muito espaço em branco.",
"summary": "Visual sóbrio e elegante."
}Campos da resposta
urlstringdominant_colorsstring[]font_suggestionsstring[]layout_notesstringstyle_notesstringsummarystringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | url vazio. | {"error":"url is required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 500 | Endereço não permitido (url not allowed), site fora do ar, resposta diferente de 200 ou falha da IA. | {"error":"failed to analyze URL","detail":"url not allowed: ..."} |
Extrair cores
Baixa a imagem e devolve suas cores predominantes, da mais para a menos presente. Útil para partir da cor do logotipo.
/api/v1/admin/ai-builder/extract-colorsAdminExtrair a paleta de uma imagem
Requer o privilégio manage_theme.
Corpo da requisição
image_urlstringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/ai-builder/extract-colors" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://www.exemplo.com.br/logo.png"
}'Resposta
{
"colors": [
{
"hex": "#B45309",
"rgb": "rgb(180, 83, 9)",
"percentage": 42.5,
"name": "Laranja queimado"
}
],
"palette": [
"#B45309",
"#1F2937"
]
}Campos da resposta
colorsobject[]hex, rgb, percentage (estimado) e name.palettestring[]Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | image_url vazio. | {"error":"image_url is required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 500 | Falha de banco de dados ou do provedor de IA. | {"error":"failed to extract colors","detail":"..."} |