Ricky logorickyDocs

Fetch a message's file

POST
/conversations/{conversation_id}/messages/{message_id}/media

Ricky stores the file of each message it receives in the background, and media.url is null until it has. This stores it now from the provider and answers the message with its url; a file already stored answers at once. A message without a received file, or whose file the provider says expired (it keeps them about 30 days), answers 422 rule_violation; other provider failures answer 502 upstream_error. Send no body.

Scope: conversations:read.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An organization API key, rky_live_…, created in Settings → API. Send it only from a server.

conversation_id*string

Conversation ID.

Formatuuid
message_id*string

Message ID.

Formatuuid

Response Body

Success.

application/json
  1. response
data*

One message in a conversation.

curl -X POST 'https://getricky.ai/api/v1/conversations/497f6eca-6276-4993-bfeb-53cbbbba6f08/messages/497f6eca-6276-4993-bfeb-53cbbbba6f08/media'
{  "data": {    "id": "c41d7e2a-5b6f-4a89-8c3d-0e1f2a3b4c5d",    "conversation_id": "9b2e4c61-7a3f-4d18-b5c2-6e0f1a2b3c4d",    "direction": "inbound",    "type": "text",    "text": "¿Ya están mis lentes?",    "sender": {      "type": "contact",      "name": null    },    "status": "read",    "media": {      "kind": "image",      "mime_type": "image/jpeg",      "filename": null,      "byte_size": -9007199254740991,      "transcript": null,      "url": null    },    "provider_message_id": "wamid.HBgLNTA3NjAwMDEyMzQV",    "created_at": "2026-10-14T15:30:00.000Z",    "sent_at": "2026-10-14T15:30:00.000Z",    "delivered_at": "2026-10-14T15:30:00.000Z",    "read_at": "2026-10-14T15:30:00.000Z",    "failed_at": "2026-10-14T15:30:00.000Z",    "edited_at": "2026-10-14T15:30:00.000Z",    "deleted_at": "2026-10-14T15:30:00.000Z"  }}