Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.waspytech.com/llms.txt

Use this file to discover all available pages before exploring further.

Cuando un contacto te manda un mensaje con media, Waspy descarga el archivo de Meta automáticamente y lo guarda en su storage. Tu bot recibe el mensaje vía webhook (o GET REST) con dos campos útiles:
  • mediaId — UUID estable que podés resolver a URL firmada vía GET /media/:id
  • mediaKey — clave interna del object storage (alternativa)
Scope requerido: media:read.

GET /media/:id

Devuelve una URL firmada de corta duración para descargar el archivo. La URL expira a los pocos minutos — refetch cuando la necesites de nuevo.
curl https://api.waspytech.com/api/v2/media/{mediaId} \
  -H "Authorization: Bearer wspy_..."
Respuesta:
{
  "data": {
    "id": "uuid",
    "url": "https://storage.googleapis.com/...?X-Goog-Signature=...",
    "expiresIn": 3600,
    "mimeType": "audio/ogg",
    "fileName": "voice.ogg"
  },
  "meta": { "requestId": "..." }
}
Tenant-scoped: si el mediaId pertenece a otro tenant, devuelve 404.

GET /media/by-key

Variante por GCS object key, útil cuando el payload del mensaje sólo expone mediaKey. Tenant-scoped: la key debe empezar con tu tenantId.
curl "https://api.waspytech.com/api/v2/media/by-key?key=<tenantId>/<uuid>.jpg" \
  -H "Authorization: Bearer wspy_..."

Flujo típico para un bot

  1. Recibís webhook message.received con type: "audio" y mediaId.
  2. (Si mediaId está null al recibirlo, esperás 1-2 segundos y refetcheás el mensaje vía GET /messages/:id.)
  3. GET /media/:id → URL firmada.
  4. Descargás el archivo desde la URL firmada antes de que expire.

Tipos de media soportados

image, video, audio, document, sticker. Para cada tipo, el mimeType del response corresponde al original que envió Meta.