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

# Enviar Imagem

> Envia uma imagem

Envia uma imagem para um contato ou grupo. Suporta URL ou base64.

## Request Body

<ParamField body="sessionId" type="string" required>
  ID da sessão que enviará a mensagem.
</ParamField>

<ParamField body="to" type="string" required>
  Destinatário (número com DDI ou JID).
</ParamField>

<ParamField body="image" type="string" required>
  URL da imagem ou conteúdo em base64.

  **Formatos suportados:** JPEG, PNG, WebP, GIF

  **Tamanho máximo:** 16 MB
</ParamField>

<ParamField body="caption" type="string">
  Legenda da imagem (opcional).
</ParamField>

<ParamField body="viewOnce" default="false" type="boolean">
  Imagem que desaparece após ser visualizada.
</ParamField>

<ParamField body="quoted" type="object">
  Responder a uma mensagem específica.
</ParamField>

<RequestExample>
  ```bash cURL (URL) theme={"system"}
  curl -X POST "https://api.oxenty.api.br/api/messages/image" \
    -H "X-API-Key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "sessionId": "550e8400-e29b-41d4-a716-446655440000",
      "to": "5511999999999",
      "image": "https://exemplo.com/imagem.jpg",
      "caption": "Confira essa promoção!"
    }'
  ```

  ```bash cURL (Base64) theme={"system"}
  curl -X POST "https://api.oxenty.api.br/api/messages/image" \
    -H "X-API-Key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "sessionId": "550e8400-e29b-41d4-a716-446655440000",
      "to": "5511999999999",
      "image": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
      "caption": "Foto do produto"
    }'
  ```

  ```typescript TypeScript theme={"system"}
  // Via URL
  const message = await client.messages.sendImage(sessionId, {
    to: '5511999999999',
    image: 'https://exemplo.com/imagem.jpg',
    caption: 'Confira essa promoção!',
  });

  // Via Base64
  const imageBuffer = fs.readFileSync('imagem.jpg');
  const base64 = imageBuffer.toString('base64');

  const message = await client.messages.sendImage(sessionId, {
    to: '5511999999999',
    image: `data:image/jpeg;base64,${base64}`,
    caption: 'Foto do produto',
  });
  ```

  ```python Python theme={"system"}
  # Via URL
  message = client.messages.send_image(
      session_id,
      to='5511999999999',
      image='https://exemplo.com/imagem.jpg',
      caption='Confira essa promoção!'
  )

  # Via Base64
  import base64

  with open('imagem.jpg', 'rb') as f:
      image_data = base64.b64encode(f.read()).decode()

  message = client.messages.send_image(
      session_id,
      to='5511999999999',
      image=f'data:image/jpeg;base64,{image_data}',
      caption='Foto do produto'
  )
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={"system"}
  {
    "messageId": "3EB0ABC123DEF456789GHI",
    "status": "sent",
    "to": "5511999999999@s.whatsapp.net",
    "timestamp": "2024-01-15T10:30:00.000Z"
  }
  ```

  ```json 400 Bad Request theme={"system"}
  {
    "statusCode": 400,
    "error": "MEDIA_TOO_LARGE",
    "message": "Arquivo excede o limite de 16MB"
  }
  ```

  ```json 400 Bad Request theme={"system"}
  {
    "statusCode": 400,
    "error": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Formato de imagem não suportado"
  }
  ```
</ResponseExample>

## View Once (Visualização Única)

Para enviar uma foto que desaparece após ser vista:

```json theme={"system"}
{
  "sessionId": "...",
  "to": "5511999999999",
  "image": "https://exemplo.com/imagem.jpg",
  "viewOnce": true
}
```

<Note>
  Imagens com `viewOnce: true` só podem ser visualizadas uma vez pelo destinatário, após isso desaparecem.
</Note>
