Kenso

Attachments

Upload a file to attach to an outgoing message, download attachments and delete unsent ones.

Inbox3 endpointsKen-Version: 2026-11-02AuthenticationWorkspacesErrors

Multipart field file and form field messageId (msg_, email only). Caps stay at 5 files, 8 MiB each, and 10 MiB pending. Requires InboxReplyAccess.

Parameters

Name
In
Type
Required
Description
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise 400 workspace_required).

Request body

multipart/form-data, optional.

Field
Type
Required
Description
file
string (binary)
optional
messageId
string
optional

Response 201

data is a AttachmentModel.

Field
Type
Description
id
string
messageId
string
fileName
string
contentType
string
sizeBytes
integer (int64)
Request
curl -X POST "https://api.ken.so/v1/attachments" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
  -F "file=@./file" \
  -F 'messageId=msg_ZW1haWw6NDAyMjg0LjJAZXhhbXBsZS5jb20'
Response 201
{
  "success": true,
  "data": {
    "id": "string",
    "messageId": "msg_ZW1haWw6NDAyMjg0LjJAZXhhbXBsZS5jb20",
    "fileName": "string",
    "contentType": "string",
    "sizeBytes": 1
  }
}

Download attachment bytes

GET/v1/attachments/{attachmentId}/contentattachments.get-content

Try it on developer.ken.so

A malformed id is not_found. inline=true is only honored for an inline image. Requires ReadAccess.

Parameters

Name
In
Type
Required
Description
attachmentId
In: path
string
required
inline
In: query
boolean
optional
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise 400 workspace_required).

Response 200

The body is a string (binary).

Request
curl -X GET "https://api.ken.so/v1/attachments/att_ZW1haWw6NDAyMjg0LjJAZXhhbXBsZS5jb206MQ/content" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 200
"<binary>"

Delete a pending attachment that has not been sent

DELETE/v1/attachments/{attachmentId}attachments.delete

Try it on developer.ken.so

Returns 204. A malformed id is not_found. Requires InboxReplyAccess.

Parameters

Name
In
Type
Required
Description
attachmentId
In: path
string
required
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise 400 workspace_required).

Response 204

Request
curl -X DELETE "https://api.ken.so/v1/attachments/att_ZW1haWw6NDAyMjg0LjJAZXhhbXBsZS5jb206MQ" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 204
HTTP/1.1 204 No Content