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/upload

Upload 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
  • successboolean
  • dataobject
    8 child fields
    • idstring
    • storageKeystring

      Use this as parameters.header.storageKey (templates) or media.storageKey (media messages).

    • mimeTypestring
    • filenamestring
    • sizeinteger
    • messageTypestring

      One ofIMAGEVIDEOAUDIODOCUMENT

    • previewUrlstring
    • createdAtstring (date-time) | null
  • metaobject
  • requestIdstring
  • timestampstring (date-time)

Errors

  • 400Default Response
  • 401Default Response
  • 422Default Response
Error envelope and fixes →
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
  • successboolean
  • dataobject
    8 child fields
    • idstring
    • storageKeystring

      Use this as parameters.header.storageKey (templates) or media.storageKey (media messages).

    • mimeTypestring
    • filenamestring
    • sizeinteger
    • messageTypestring

      One ofIMAGEVIDEOAUDIODOCUMENT

    • previewUrlstring
    • createdAtstring (date-time) | null
  • metaobject
  • requestIdstring
  • timestampstring (date-time)

Errors

  • 401Default Response
  • 404Default Response
Error envelope and fixes →
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}/download

Stream a pending upload. Pass `inline=1` for browser preview.

Path parameters

  • uploadIdstringrequired

Query parameters

  • inlinestring

    Set to 1/true for inline Content-Disposition

Response 200Binary file stream

Errors

  • 401Default Response
  • 404Default Response
Error envelope and fixes →
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