Chat

Create an upload URL

POST/chat-rooms/:roomId/files/upload-url

Files are uploaded straight to S3, not through the API. PUT the file to the returned uploadUrl with exactly the requiredHeaders. Do not add an Authorization header (it breaks the signature). Register the upload afterwards with POST /chat-rooms/:roomId/files. The limit is 10MB.

AuthLogin required

Path parameters

roomIdstringrequired

Chat room ID.

Request body

fileNamestringrequired

File name (up to 255 characters).

mimeTypestringrequired

MIME type; must match the Content-Type of the PUT.

sizenumberrequired

Size in bytes (up to 10MB). The real size is verified on registration.

Response

FieldTypeDescription
uploadUrlstringPre-signed S3 PUT URL; do not add an Authorization header.
uploadKeystringThe upload key; pass it when registering the file.
expiresInnumberLifetime of the URL in seconds.
requiredHeadersRecord<string, string>Headers to send with the PUT exactly as given; the signature fails otherwise.
Request
curl https://api.4s.link/chat-rooms/ROOM_ID/files/upload-url \
-X POST \
-H "Authorization: Bearer 4s_at_..." \
-H "Content-Type: application/json" \
-d '{
"fileName": "report.pdf",
"mimeType": "application/pdf",
"size": 1234567
}'
Example response
{
"uploadUrl": "https://.../chat-file-uploads/...?X-Amz-Signature=...",
"uploadKey": "chat-file-uploads/r1a2b3c4-.../a1b2c3d4-.../....pdf",
"expiresIn": 300,
"requiredHeaders": { "Content-Type": "application/pdf", "Content-Length": "1234567" }
}