Resolve message attachment
Resolve one attachment on a message to a media url that works right now.
Instagram and Facebook sign DM media urls per request and expire them, so
the url on a message is a snapshot: it works when you read the message
and stops working later. This endpoint checks the stored url and, when it
has gone stale, re-mints the message's media from Meta and persists it
before answering. The message id never expires, so this URL is the one to
store. It is returned ready-made on each attachment as refreshUrl when
you read a message over REST.
Webhook payloads do not carry refreshUrl, so a webhook-driven
integration builds this URL itself. Every piece is in the event:
message.conversationId, message.platformMessageId, the attachment's
zero-based position, and account.accountId. accountId is a
required query parameter; omitting it returns 400
missing_required_field, which is the same requirement
GET /v1/whatsapp/media/{mediaId} has.
By default it responds 302 to the live media url, so it can be used
directly as an <img src> on a browser session. API-key integrators
should pass ?format=json and read url off the body, since a browser
cannot attach an Authorization header to an image request.
Only Instagram and Facebook media can be re-minted. On other platforms
the stored url is returned as-is when it still resolves, and 404
otherwise.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Path Parameters
The conversation ID (Zernio id or platform conversation id)
The message id as returned by the list-messages endpoint (the platform message id)
Zero-based position of the attachment in the message's attachments array
0 <= valueQuery Parameters
Account ID. Required: without it the request returns 400 missing_required_field.
redirect (default) answers 302 to the media; json returns the url in the body
"redirect"Value in
- "redirect"
- "json"
Response Body
application/json
application/json
application/json
{ "status": "string", "url": "string", "refreshed": true}Upload media file
Upload a media file using API key authentication and get back a publicly accessible URL. The URL can be used as attachmentUrl when sending inbox messages. Files are stored in temporary storage and auto-delete after 7 days. Maximum file size is 25MB. Unlike /v1/media/upload (which uses upload tokens for end-user flows), this endpoint takes your API key in the Authorization header, for programmatic use.
Add reaction
Add an emoji reaction to a message. Platform support: - Telegram: Supports a subset of Unicode emoji reactions - WhatsApp: Supports any standard emoji (one reaction per message per sender) - Instagram and Facebook Messenger: Any standard emoji, subject to Meta's 24h messaging window - Slack: The emoji must have a Slack name (e.g. `:thumbsup:`); unnamed characters return 400 - All others: Returns 400 (not supported)