multipart/form-data with the field name images.{} is not a valid body.sendMessage → POST /v1/messages/upload-image as multipart images → save returned url values → pass them into send message.images field to upload more than one file.Authorization: Bearer <COMMUNITY_API_KEY>. Required permission is sendMessage. Keep the key server-side.Content-Type: application/json with {} returns { "status": "error", "message": "No image buffers provided" }.images returns a top-level array:[
{
"id": "<uploadId>",
"name": "pixel.png",
"url": "https://files.example.com/pixel.png",
"type": "image/png",
"size": 67
}
]url as opaque. Do not hard-code a storage hostname in clients. Treat filenames as synthetic.200. The body is a raw array, not { status, data }.id, name, url, type, and size. Persist url if a later send-message call needs it. There is no follow-up GET for the upload record.200 array with a url means the bytes were accepted. Sending the message is a separate call. If send fails, the uploaded file can still exist.| Status | When | Recovery |
|---|---|---|
400 No image buffers provided | JSON body, missing files, or empty multipart | Send multipart/form-data with images. |
401 | Missing or invalid Bearer token | Add a valid community key with sendMessage. |
url already returned. There is no idempotency key. Duplicate successful uploads create additional stored objects.images, not file or csv.curl --location 'https://adss-integration.returning.ai/apis/v1/messages/upload-image' \
--form 'images=@""'[
{
"id": "string",
"name": "string",
"url": "string",
"type": "string",
"size": 0
}
]