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

# Baixar mídia recebida

> Baixa a mídia recebida pelo webhook e retorna uma URL de download válida por 30 dias.

Quando o cliente envia uma imagem, áudio, vídeo ou documento, o webhook traz apenas o **ID da mídia**, como em `image.id`. Na Meta, transformar esse ID em arquivo exige duas chamadas autenticadas, e o link gerado expira em poucos minutos.

Este endpoint faz esse trabalho por você: baixa o arquivo da Meta e retorna uma **URL de download válida por 30 dias**, junto com o tipo e o tamanho do arquivo.

```bash theme={null}
curl https://cloud.datafyapi.com.br/media/1234567890123456 \
  -H 'Authorization: Bearer sk_live_xxx'
```

Se em vez do link você quer o arquivo em si, use [Baixar o arquivo da mídia](https://developers.datafyapi.com.br/api-reference/whatsapp/datafy/baixar-arquivo-midia.md).

> [!NOTE]
>
> A Meta mantém as mídias recebidas por até 30 dias. Depois disso, ou com um ID inválido, a resposta é **404**.


## OpenAPI

````yaml api-reference/whatsapp/openapi.json GET /media/{id}
openapi: 3.1.0
info:
  title: Datafy API — WhatsApp
  version: 1.0.0
  description: Espelho da Meta Cloud API e endpoints próprios da Datafy.
servers:
  - url: https://cloud.datafyapi.com.br
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: Templates
  - name: Mídia
  - name: Datafy
paths:
  /media/{id}:
    get:
      tags:
        - Datafy
      summary: Baixar mídia recebida
      description: >-
        Baixa a mídia recebida pelo webhook e retorna uma URL de download válida
        por 30 dias.
      operationId: baixarMidia
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: ID da mídia recebido no webhook, como `image.id` ou `document.id`.
      responses:
        '200':
          description: URL da mídia.
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    description: URL de download da mídia.
                  mime_type:
                    type: string
                    description: Tipo MIME do arquivo.
                  size:
                    type: integer
                    description: Tamanho do arquivo em bytes.
              example:
                url: >-
                  https://midia.datafyapi.com.br/cli_123/2026/09/1757862000000-a1b2c3d4.jpg
                mime_type: image/jpeg
                size: 184233
        '400':
          description: Falha ao baixar a mídia da Meta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatafyError'
              example:
                statusCode: 400
                message: Falha ao baixar a mídia da Meta (403)
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          description: Mídia não encontrada ou expirada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatafyError'
              example:
                statusCode: 404
                message: >-
                  Mídia não encontrada ou expirada (ID inválido ou mais de 30
                  dias)
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    DatafyError:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
  responses:
    Unauthorized:
      description: Token ausente ou inválido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DatafyError'
          example:
            statusCode: 401
            message: Token inválido ou não encontrado.
    PaymentRequired:
      description: Assinatura da Datafy inativa.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DatafyError'
          example:
            statusCode: 402
            message: >-
              Assinatura inativa. Ative sua assinatura no painel para voltar a
              usar a API.
    TooManyRequests:
      description: Limite de requisições excedido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DatafyError'
          example:
            statusCode: 429
            message: Rate limit excedido (60 req/min). Tente novamente em 12s.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Token gerado no painel da Datafy ao criar o canal. Formato:
        `sk_live_xxx`.

````

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