API reference
Media
Upload media for outbound messages and download pending uploads.
Every request needs
x-tenant-id and an API key or OAuth token. Channel IDs are copied from Settings → Developer in the app. See Authentication.Upload media
post
/api/public/v1/media/uploadUpload a file for outbound messaging or template headers. Send multipart/form-data with a `file` field. Use the returned `storageKey` in message/template sends.
Response 201Default Response
successbooleandataobject8 child fields
idstringstorageKeystringUse this as parameters.header.storageKey (templates) or media.storageKey (media messages).
mimeTypestringfilenamestringsizeintegermessageTypestringOne of
IMAGEVIDEOAUDIODOCUMENTpreviewUrlstringcreatedAtstring (date-time) | null
metaobjectrequestIdstringtimestampstring (date-time)
curl -X POST "https://api.inaiy.com/api/public/v1/media/upload" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"Response 201
{
"success": true,
"data": {
"id": "01HXYZ...",
"storageKey": "tenants/.../pending/.../file.pdf",
"mimeType": "application/pdf",
"filename": "invoice.pdf",
"size": 245760,
"messageType": "DOCUMENT",
"previewUrl": "/api/public/v1/media/pending/01HXYZ/download?inline=1",
"createdAt": "2026-07-12T09:30:00.000Z"
},
"meta": {},
"requestId": "string",
"timestamp": "2026-07-12T09:30:00.000Z"
}Get pending media metadata
get
/api/public/v1/media/pending/{uploadId}Fetch metadata for a previously uploaded pending media file.
Path parameters
uploadIdstringrequired
Response 200Default Response
successbooleandataobject8 child fields
idstringstorageKeystringUse this as parameters.header.storageKey (templates) or media.storageKey (media messages).
mimeTypestringfilenamestringsizeintegermessageTypestringOne of
IMAGEVIDEOAUDIODOCUMENTpreviewUrlstringcreatedAtstring (date-time) | null
metaobjectrequestIdstringtimestampstring (date-time)
curl -X GET "https://api.inaiy.com/api/public/v1/media/pending/6650a1b2c3d4e5f6a7b8c9d0" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"Response 200
{
"success": true,
"data": {
"id": "01HXYZ...",
"storageKey": "tenants/.../pending/.../file.pdf",
"mimeType": "application/pdf",
"filename": "invoice.pdf",
"size": 245760,
"messageType": "DOCUMENT",
"previewUrl": "/api/public/v1/media/pending/01HXYZ/download?inline=1",
"createdAt": "2026-07-12T09:30:00.000Z"
},
"meta": {},
"requestId": "string",
"timestamp": "2026-07-12T09:30:00.000Z"
}Download / preview pending media
get
/api/public/v1/media/pending/{uploadId}/downloadStream a pending upload. Pass `inline=1` for browser preview.
Path parameters
uploadIdstringrequired
Query parameters
inlinestringSet to 1/true for inline Content-Disposition
Response 200Binary file stream
curl -X GET "https://api.inaiy.com/api/public/v1/media/pending/6650a1b2c3d4e5f6a7b8c9d0/download" \
-H "x-tenant-id: demo" \
-H "x-api-key: wp_live_xxxxxxxxxxxxxxxxxxxx"Response 200
string