> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatnorris.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Enviar anexo

> Enviar uma imagem ou um PDF para depois mandá-lo a um agente em uma mensagem de chat.

# Enviar anexo

Envia um arquivo (imagem ou PDF) para anexá-lo a uma mensagem. A resposta retorna um objeto `{ url, name, type }` que é passado exatamente como está no campo `attachment` de [Enviar mensagem](https://docs.chatnorris.ai/pt/api-referencia/agentes/chat.md). O arquivo não vai no corpo do chat: primeiro ele é enviado com este endpoint e depois é referenciado pela sua URL.

Enviar um arquivo não consome créditos. O custo é cobrado ao enviar a mensagem.

```http theme={null}
POST https://app.chatnorris.ai/api/v2/chatbots/{chatbot_id}/attachments
Authorization: Bearer <sua_api_key>
Content-Type: multipart/form-data
```

**Escopo necessário:** `chat:write`

***

## Path parameters

| Parâmetro | Tipo | Descrição |
| - | - | - |
| `chatbot_id` | string | ID do agente ao qual o anexo será enviado |

***

## Corpo da request

O corpo deve ser `multipart/form-data` com um único campo:

| Campo | Tipo | Obrigatório | Descrição |
| - | - | - | - |
| `file` | arquivo | ✅ | O arquivo a enviar. O tipo é obtido do `Content-Type` da parte do formulário. |

### Tipos e tamanhos permitidos

| Tipo | `Content-Type` | Tamanho máximo |
| - | - | - |
| Imagem PNG | `image/png` | 5 MB |
| Imagem JPEG | `image/jpeg` | 5 MB |
| Imagem WebP | `image/webp` | 5 MB |
| Imagem GIF | `image/gif` | 5 MB |
| PDF | `application/pdf` | 15 MB |

***

## Resposta

**Código:** `201 Created`

```json theme={null}
{
  "status": "success",
  "data": {
    "url": "https://<projeto>.supabase.co/storage/v1/object/public/chat-attachments/...",
    "name": "fatura.pdf",
    "type": "application/pdf"
  }
}
```

### Campos da resposta

| Campo | Tipo | Descrição |
| - | - | - |
| `url` | string | URL do arquivo enviado. Passe-a em `attachment.url` ao enviar a mensagem. |
| `name` | string | Nome original do arquivo (máx. 200 caracteres). É omitido se o arquivo não tiver nome. |
| `type` | string | Tipo do arquivo normalizado (por exemplo, `image/jpg` é retornado como `image/jpeg`). |

***

## Exemplo completo: enviar o arquivo e a mensagem

**1. Enviar o arquivo**

```bash theme={null}
curl -X POST "https://app.chatnorris.ai/api/v2/chatbots/{chatbot_id}/attachments" \
  -H "Authorization: Bearer <sua_api_key>" \
  -F "file=@fatura.pdf;type=application/pdf"
```

**2. Enviar a mensagem com o anexo**

Use o objeto `data` da resposta anterior como `attachment`. O campo `message` continua obrigatório.

```bash theme={null}
curl -X POST "https://app.chatnorris.ai/api/v2/chatbots/{chatbot_id}/chat" \
  -H "Authorization: Bearer <sua_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Você pode me dizer qual é o total desta fatura?",
    "attachment": {
      "url": "https://<projeto>.supabase.co/storage/v1/object/public/chat-attachments/...",
      "name": "fatura.pdf",
      "type": "application/pdf"
    }
  }'
```

> [!NOTE]
>
> Apenas anexos enviados com este endpoint são processados. Se `attachment.url` apontar para outro site, o agente não consegue ver o arquivo.

***

## Erros comuns

| HTTP | Code | Descrição |
| - | - | - |
| 400 | `INVALID_INPUT` | O corpo não é `multipart/form-data` ou falta o campo `file` |
| 400 | `INVALID_FILE_TYPE` | O tipo de arquivo não é PNG, JPEG, WebP, GIF nem PDF |
| 400 | `FILE_TOO_LARGE` | O arquivo ultrapassa o limite do seu tipo (5 MB para imagens, 15 MB para PDF) |
| 403 | `INSUFFICIENT_SCOPE` | A API key não tem o scope `chat:write` |
| 404 | `NOT_FOUND` | O agente não existe, está inativo ou não pertence à sua organização |
| 429 | `RATE_LIMIT_EXCEEDED` | O limite de requests por minuto da API key foi ultrapassado |
| 500 | `INTERNAL_ERROR` | Não foi possível salvar o arquivo |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.