> ## 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.

# Upload de mídia

> Espelho de `POST /{phone_number_id}/media` da Meta Cloud API. Retorna um `id` para usar no envio de mensagens de mídia.

Envia um arquivo para a Meta e retorna um `id`. Use esse `id` no envio de mensagens de mídia, no lugar de `link`:

```json theme={null}
{
  "messaging_product": "whatsapp",
  "to": "5511999999999",
  "type": "image",
  "image": { "id": "1234567890123456" }
}
```

Se o arquivo já está em uma URL pública, você pode enviar a mensagem direto com `link`, sem fazer upload. Tipos e tamanhos aceitos estão na [referência de mídia da Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media).


## OpenAPI

````yaml api-reference/whatsapp/openapi.json POST /v1/{phone_number_id}/media
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:
  /v1/{phone_number_id}/media:
    post:
      tags:
        - Mídia
      summary: Upload de mídia
      description: >-
        Espelho de `POST /{phone_number_id}/media` da Meta Cloud API. Retorna um
        `id` para usar no envio de mensagens de mídia.
      operationId: uploadMidia
      parameters:
        - $ref: '#/components/parameters/PhoneNumberId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - messaging_product
                - file
                - type
              properties:
                messaging_product:
                  type: string
                  enum:
                    - whatsapp
                file:
                  type: string
                  format: binary
                  description: Arquivo a ser enviado.
                type:
                  type: string
                  description: >-
                    Tipo MIME do arquivo, como `image/jpeg` ou
                    `application/pdf`.
                  example: image/jpeg
      responses:
        '200':
          description: Mídia enviada.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID da mídia.
              example:
                id: '1234567890123456'
        '400':
          $ref: '#/components/responses/MetaError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      externalDocs:
        description: Referência de mídia da Meta
        url: >-
          https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media
components:
  parameters:
    PhoneNumberId:
      name: phone_number_id
      in: path
      required: true
      schema:
        type: string
      description: ID do número na Meta. Descubra com `GET /me`.
  responses:
    MetaError:
      description: Erro retornado pela Meta, repassado sem alteração.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MetaError'
          example:
            error:
              message: (#131030) Recipient phone number not in allowed list
              type: OAuthException
              code: 131030
              fbtrace_id: AbCdEfGhIjK
    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.
  schemas:
    MetaError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
            code:
              type: integer
            error_subcode:
              type: integer
            fbtrace_id:
              type: string
    DatafyError:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
  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.