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

# Enviar Arquivo

> Como fazer upload de arquivos para o Leavo

## Upload de Arquivo

```bash theme={null}
POST /backend/uploads
Content-Type: multipart/form-data
```

### Parâmetros do Form

| Campo    | Tipo   | Obrigatório | Descrição                                             |
| -------- | ------ | ----------- | ----------------------------------------------------- |
| `file`   | file   | Sim         | Arquivo para upload (máx. 10 MB)                      |
| `type`   | string | Não         | Tipo do arquivo: `media` ou `audio` (padrão: `media`) |
| `folder` | string | Não         | Pasta para organizar o arquivo no storage             |

### Exemplo com cURL

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.leavo.ai/backend/uploads" \
    -H "Authorization: Bearer sua_chave_aqui" \
    -F "file=@foto_produto.jpg" \
    -F "type=media"
  ```

  ```javascript JavaScript theme={null}
  const formData = new FormData();
  formData.append('file', fileInput.files[0]);
  formData.append('type', 'media');

  const response = await fetch('https://api.leavo.ai/backend/uploads', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sua_chave_aqui'
    },
    body: formData
  });

  const upload = await response.json();
  console.log('URL do arquivo:', upload.file_url);
  ```

  ```python Python theme={null}
  import requests

  with open('foto_produto.jpg', 'rb') as f:
      response = requests.post(
          'https://api.leavo.ai/backend/uploads',
          headers={'Authorization': 'Bearer sua_chave_aqui'},
          files={'file': f},
          data={'type': 'media'}
      )

  print('URL do arquivo:', response.json()['file_url'])
  ```
</CodeGroup>

### Resposta (200)

```json theme={null}
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "tenant_id": "d6b10acc-2307-413f-a4de-4c2edf3f9a70",
  "filename": "foto_produto",
  "file_type": "media",
  "file_url": "https://api.leavo.ai/media/proxy/d6b10acc/550e8400.jpg",
  "mime_type": "image/jpeg",
  "size": 1048576,
  "status": "PENDING",
  "created_at": "2024-01-15T10:30:00Z"
}
```

## Enviar Mídia em Mensagem

Após o upload, use a `file_url` para enviar como mensagem de mídia:

```bash theme={null}
POST /backend/messages/send-media
Content-Type: multipart/form-data
```

| Campo          | Tipo   | Obrigatório | Descrição                               |
| -------------- | ------ | ----------- | --------------------------------------- |
| `channel_id`   | UUID   | Sim         | Canal de envio                          |
| `remote_jid`   | string | Sim         | Destinatário (JID do WhatsApp)          |
| `message_type` | string | Sim         | `image`, `audio`, `video` ou `document` |
| `content`      | string | Não         | Legenda da mídia                        |
| `file`         | file   | Sim         | Arquivo de mídia                        |

### Erros Comuns

| Código | Descrição                               |
| ------ | --------------------------------------- |
| `400`  | Arquivo não enviado ou formato inválido |
| `413`  | Arquivo excede o limite de 10 MB        |
