https://inkbox.ai/api/v1/slack. File reads require an active identity and connected workspace. Live file reads also require access to the file in Slack.
Get file metadata
connection_id is a UUID. file_id starts with F, followed by uppercase letters or digits, up to 64 characters total. Get file IDs from message metadata or file webhooks.
Response (200)
name, title, mimetype, and byte size can be null. downloadable indicates that Slack reports a supported file with a download location. It does not guarantee that the file will remain accessible or fit the download size limit.
Download file content
200 with raw file bytes and Content-Type: application/octet-stream. This is not JSON or a persistent file URL. The attachment filename uses the file ID.
cURL
413 with detail.code: "file_too_large"; retrying the same download will not bypass the limit. External files are unsupported and return 422. An unavailable file can return 404; another download failure can return 502. A temporarily unavailable stored copy can return 503 with Retry-After. Honor Retry-After on temporary failures and rate-limited reads.
Inkbox can retain supported file bytes. The Console and organization admin keys use available stored copies without a live visibility lookup. Agent-scoped downloads still require current file access. An explicit content download can fall back to Slack when no stored copy is available. Access may change after a file event arrives. File visibility does not prove the file’s original workspace.
Download a cached preview
404 when no cached preview exists and no capture is queued. Queued or running capture/repair and temporary storage failures return 503 with Retry-After; wait for that delay before retrying. The endpoint does not generate or fetch an arbitrary remote image on demand.
Read included.files[file_id] from an expanded archive page. content_cached and preview_cached describe copy availability. The nullable preview_url points to this authenticated route when a preview is ready. These fields are observations, not guarantees that a later download will succeed. External, oversized, unsupported, deleted, or inaccessible files may lack copies; use status and error_code rather than silently treating them as empty files.
cURL
Upload a file
Idempotency-Key and returns the operation object, not a send action. The send-message endpoint still accepts text only.
cURL
Hello. Returns 200 with operation: "file_upload". Inspect status; file_id can identify a file even when a later upload step fails or becomes uncertain. It is not proof the file was shared successfully.
An oversized request body returns 413; invalid or oversized decoded file content returns 422. Slack permissions, workspace upload policies, supported file types, and rate limits apply. A failed upload may have created a file before a later step failed. Keep the same key if the HTTP response is lost. For unknown, reconcile the file and conversation before deciding on a new upload; a new key can create a duplicate.
Supported files observed in retained messages can become available as cached copies after upload. The upload response does not guarantee that a copy or preview is ready. Live downloads still depend on current Slack access.
