---
title: "Create case file"
method: POST
path: "/v1/transaction_monitoring/cases/{case_token}/files"
tags: ["Transaction Monitoring"]
---

# Create case file

`POST /v1/transaction_monitoring/cases/{case_token}/files`

Creates a file record and returns a presigned URL for uploading the file to the case.

## Path parameters

- `case_token` string, uuid, required

## Request body

- CreateFileRequest — Parameters for creating a case file and starting an upload
  - `name` string, required — Name of the file to upload

## Response `201`

Case file

- File — A file attached to a case. Status-dependent fields are always present but may be `null`: - `upload_url`, `upload_url_expires`, and `upload_constraints` are populated when `status` is `PENDING` or `REJECTED` - `download_url` and `download_url_expires` are populated when `status` is `READY` - `failure_reason` is populated when `status` is `REJECTED`
  - `token` string, uuid, required — Globally unique identifier for the file
  - `name` string, required — Name of the file
  - `mime_type` string, nullable, required — MIME type of the file, available once the file is ready
  - `size_bytes` integer, nullable, required — Size of the file in bytes, available once the file is ready
  - `status` 'PENDING' | 'READY' | 'REJECTED', required — Lifecycle status of a case file: - `PENDING` - An upload URL has been issued and the file is awaiting upload - `READY` - The file has been uploaded and validated; a download URL is available - `REJECTED` - File validation failed; see `failure_reason` for details
  - `upload_url` string, nullable, required — Presigned URL the client uses to upload the file
  - `upload_url_expires` string, date-time, nullable, required — Date and time at which the upload URL expires
  - `upload_constraints` UploadConstraints, required — Constraints applied to a file upload, returned alongside the upload URL so clients can validate before uploading
    - `accepted_mime_types` string[], required — MIME types accepted for the upload
    - `max_size_bytes` integer, required — Maximum accepted file size, in bytes
  - `download_url` string, nullable, required — Presigned URL the client uses to download the file
  - `download_url_expires` string, date-time, nullable, required — Date and time at which the download URL expires
  - `failure_reason` string, nullable, required — Reason the file was rejected, when applicable
  - `created` string, date-time, required — Date and time at which the file record was created
  - `updated` string, date-time, required — Date and time at which the file record was last updated

## Other responses

- `400` — Bad Request
- `404` — Not Found

## Changes

- **2026-06-10** `1c39edadd1a4` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/lithic-com/apis/lithic-developer-api/changes/v1/transaction_monitoring/cases/:case_token/files/post.md)

---

[API](https://skmtc.dev/lithic-com/apis/lithic-developer-api.md) · [All operations](https://skmtc.dev/lithic-com/apis/lithic-developer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lithic-com/lithic-developer-api/revisions/53ab5d4e2adb/schema)
