diff --git a/docs/ar/concepts/files.mdx b/docs/ar/concepts/files.mdx
index 66516a093..cc04a6cee 100644
--- a/docs/ar/concepts/files.mdx
+++ b/docs/ar/concepts/files.mdx
@@ -134,6 +134,10 @@ result = flow.kickoff(
)
```
+
+When deployed on CrewAI Platform, `ImageFile`, `PDFFile`, and other file-typed fields in your flow state automatically get a file upload UI. Users can drag and drop files directly in the Platform interface. Files are stored securely and passed to agents using provider-specific optimizations (inline base64, file upload APIs, or URL references depending on the provider). For API usage examples, see [File Inputs in Flows](/concepts/flows#file-inputs).
+
+
### مع الوكلاء المستقلين
مرر الملفات مباشرة إلى تشغيل الوكيل:
diff --git a/docs/ar/concepts/flows.mdx b/docs/ar/concepts/flows.mdx
index 8c01bdd97..e3754aba7 100644
--- a/docs/ar/concepts/flows.mdx
+++ b/docs/ar/concepts/flows.mdx
@@ -341,6 +341,89 @@ flow.kickoff()
من خلال توفير خيارات إدارة الحالة غير المهيكلة والمهيكلة، تمكّن تدفقات CrewAI المطورين من بناء سير عمل ذكاء اصطناعي مرن ومتين في آن واحد، ملبيةً مجموعة واسعة من متطلبات التطبيقات.
+### File Inputs
+
+When using structured state, you can include file-typed fields using classes from `crewai-files`. This enables file uploads as part of your flow's input:
+
+```python
+from crewai.flow.flow import Flow, start
+from crewai_files import ImageFile, PDFFile
+from pydantic import BaseModel
+
+class OnboardingState(BaseModel):
+ document: PDFFile # File upload
+ cover_image: ImageFile # Image upload
+ title: str = "" # Text input
+
+class OnboardingFlow(Flow[OnboardingState]):
+ @start()
+ def process_upload(self):
+ # Access files directly from state
+ print(f"Processing: {self.state.title}")
+ return self.state.document
+```
+
+When deployed on **CrewAI Platform**, file-typed fields automatically render as file upload dropzones in the UI. Users can drag and drop files, which are then passed to your flow.
+
+**Kicking off with files via API:**
+
+The `/kickoff` endpoint auto-detects the request format:
+- **JSON body** → normal kickoff
+- **multipart/form-data** → file upload + kickoff
+
+API users can also pass URL strings directly to file-typed fields—Pydantic coerces them automatically.
+
+### API Usage
+
+#### Option 1: Multipart kickoff (recommended)
+
+Send files directly with the kickoff request:
+
+```bash
+# With files (multipart) — same endpoint
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -F 'inputs={"company_name": "Einstein"}' \
+ -F 'cover_image=@/path/to/photo.jpg'
+```
+
+Files are automatically stored and converted to `FileInput` objects. The agent receives the file with provider-specific optimization (inline base64, file upload API, or URL reference depending on the LLM provider).
+
+#### Option 2: JSON kickoff (no files)
+
+```bash
+# Without files (JSON) — same endpoint
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"company_name": "Einstein"}}'
+```
+
+#### Option 3: Separate upload + kickoff
+
+This is an alternative to multipart upload when you need to upload files separately from the kickoff request. Upload files first, then reference them by URL:
+
+```bash
+# Step 1: Upload
+curl -X POST https://your-deployment.crewai.com/files \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -F 'file=@/path/to/photo.jpg' \
+ -F 'field_name=cover_image'
+# Returns: {"url": "https://...", "field_name": "cover_image"}
+
+# Step 2: Kickoff with URL
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"company_name": "Einstein"}, "input_files": {"cover_image": "https://..."}}'
+```
+
+See the Platform API documentation for full `/files` endpoint details.
+
+#### On CrewAI Platform
+
+When using the Platform UI, file-typed fields automatically render as drag-and-drop upload zones. No API calls needed—just drop the file and click Run.
+
## استمرارية التدفق
يتيح مزخرف @persist الاستمرارية التلقائية للحالة في تدفقات CrewAI، مما يسمح لك بالحفاظ على حالة التدفق عبر عمليات إعادة التشغيل أو تنفيذات سير العمل المختلفة. يمكن تطبيق هذا المزخرف على مستوى الفئة أو مستوى الدالة، مما يوفر مرونة في كيفية إدارة استمرارية الحالة.
diff --git a/docs/ko/concepts/files.mdx b/docs/ko/concepts/files.mdx
index c07a39fad..4f589dfec 100644
--- a/docs/ko/concepts/files.mdx
+++ b/docs/ko/concepts/files.mdx
@@ -134,6 +134,10 @@ result = flow.kickoff(
)
```
+
+When deployed on CrewAI Platform, `ImageFile`, `PDFFile`, and other file-typed fields in your flow state automatically get a file upload UI. Users can drag and drop files directly in the Platform interface. Files are stored securely and passed to agents using provider-specific optimizations (inline base64, file upload APIs, or URL references depending on the provider). For API usage examples, see [File Inputs in Flows](/concepts/flows#file-inputs).
+
+
### 단독 에이전트와 함께
에이전트 킥오프에 직접 파일을 전달합니다:
diff --git a/docs/ko/concepts/flows.mdx b/docs/ko/concepts/flows.mdx
index 13f7d6933..2dcfebbec 100644
--- a/docs/ko/concepts/flows.mdx
+++ b/docs/ko/concepts/flows.mdx
@@ -334,6 +334,89 @@ flow.kickoff()
CrewAI Flows는 비구조적 및 구조적 상태 관리 옵션을 모두 제공함으로써, 개발자들이 다양한 애플리케이션 요구 사항에 맞춰 유연하면서도 견고한 AI 워크플로를 구축할 수 있도록 지원합니다.
+### File Inputs
+
+When using structured state, you can include file-typed fields using classes from `crewai-files`. This enables file uploads as part of your flow's input:
+
+```python
+from crewai.flow.flow import Flow, start
+from crewai_files import ImageFile, PDFFile
+from pydantic import BaseModel
+
+class OnboardingState(BaseModel):
+ document: PDFFile # File upload
+ cover_image: ImageFile # Image upload
+ title: str = "" # Text input
+
+class OnboardingFlow(Flow[OnboardingState]):
+ @start()
+ def process_upload(self):
+ # Access files directly from state
+ print(f"Processing: {self.state.title}")
+ return self.state.document
+```
+
+When deployed on **CrewAI Platform**, file-typed fields automatically render as file upload dropzones in the UI. Users can drag and drop files, which are then passed to your flow.
+
+**Kicking off with files via API:**
+
+The `/kickoff` endpoint auto-detects the request format:
+- **JSON body** → normal kickoff
+- **multipart/form-data** → file upload + kickoff
+
+API users can also pass URL strings directly to file-typed fields—Pydantic coerces them automatically.
+
+### API Usage
+
+#### Option 1: Multipart kickoff (recommended)
+
+Send files directly with the kickoff request:
+
+```bash
+# With files (multipart) — same endpoint
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -F 'inputs={"company_name": "Einstein"}' \
+ -F 'cover_image=@/path/to/photo.jpg'
+```
+
+Files are automatically stored and converted to `FileInput` objects. The agent receives the file with provider-specific optimization (inline base64, file upload API, or URL reference depending on the LLM provider).
+
+#### Option 2: JSON kickoff (no files)
+
+```bash
+# Without files (JSON) — same endpoint
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"company_name": "Einstein"}}'
+```
+
+#### Option 3: Separate upload + kickoff
+
+This is an alternative to multipart upload when you need to upload files separately from the kickoff request. Upload files first, then reference them by URL:
+
+```bash
+# Step 1: Upload
+curl -X POST https://your-deployment.crewai.com/files \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -F 'file=@/path/to/photo.jpg' \
+ -F 'field_name=cover_image'
+# Returns: {"url": "https://...", "field_name": "cover_image"}
+
+# Step 2: Kickoff with URL
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"company_name": "Einstein"}, "input_files": {"cover_image": "https://..."}}'
+```
+
+See the Platform API documentation for full `/files` endpoint details.
+
+#### On CrewAI Platform
+
+When using the Platform UI, file-typed fields automatically render as drag-and-drop upload zones. No API calls needed—just drop the file and click Run.
+
## 플로우 지속성
@persist 데코레이터는 CrewAI 플로우에서 자동 상태 지속성을 활성화하여, 플로우 상태를 재시작이나 다른 워크플로우 실행 간에도 유지할 수 있도록 합니다. 이 데코레이터는 클래스 수준이나 메서드 수준 모두에 적용할 수 있어, 상태 지속성을 관리하는 데 유연성을 제공합니다.
diff --git a/docs/pt-BR/concepts/files.mdx b/docs/pt-BR/concepts/files.mdx
index cc2f4f3ca..ea7a9fae5 100644
--- a/docs/pt-BR/concepts/files.mdx
+++ b/docs/pt-BR/concepts/files.mdx
@@ -134,6 +134,10 @@ result = flow.kickoff(
)
```
+
+When deployed on CrewAI Platform, `ImageFile`, `PDFFile`, and other file-typed fields in your flow state automatically get a file upload UI. Users can drag and drop files directly in the Platform interface. Files are stored securely and passed to agents using provider-specific optimizations (inline base64, file upload APIs, or URL references depending on the provider). For API usage examples, see [File Inputs in Flows](/concepts/flows#file-inputs).
+
+
### Com Agentes Standalone
Passe arquivos diretamente no kickoff do agente:
diff --git a/docs/pt-BR/concepts/flows.mdx b/docs/pt-BR/concepts/flows.mdx
index 2cac627b2..da6b73bca 100644
--- a/docs/pt-BR/concepts/flows.mdx
+++ b/docs/pt-BR/concepts/flows.mdx
@@ -173,6 +173,89 @@ Cada estado nos flows do CrewAI recebe automaticamente um identificador único (
Ao oferecer as duas opções de gerenciamento de estado, o CrewAI Flows permite que desenvolvedores criem fluxos de IA que sejam ao mesmo tempo flexíveis e robustos, atendendo a uma ampla variedade de requisitos de aplicação.
+### File Inputs
+
+When using structured state, you can include file-typed fields using classes from `crewai-files`. This enables file uploads as part of your flow's input:
+
+```python
+from crewai.flow.flow import Flow, start
+from crewai_files import ImageFile, PDFFile
+from pydantic import BaseModel
+
+class OnboardingState(BaseModel):
+ document: PDFFile # File upload
+ cover_image: ImageFile # Image upload
+ title: str = "" # Text input
+
+class OnboardingFlow(Flow[OnboardingState]):
+ @start()
+ def process_upload(self):
+ # Access files directly from state
+ print(f"Processing: {self.state.title}")
+ return self.state.document
+```
+
+When deployed on **CrewAI Platform**, file-typed fields automatically render as file upload dropzones in the UI. Users can drag and drop files, which are then passed to your flow.
+
+**Kicking off with files via API:**
+
+The `/kickoff` endpoint auto-detects the request format:
+- **JSON body** → normal kickoff
+- **multipart/form-data** → file upload + kickoff
+
+API users can also pass URL strings directly to file-typed fields—Pydantic coerces them automatically.
+
+### API Usage
+
+#### Option 1: Multipart kickoff (recommended)
+
+Send files directly with the kickoff request:
+
+```bash
+# With files (multipart) — same endpoint
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -F 'inputs={"company_name": "Einstein"}' \
+ -F 'cover_image=@/path/to/photo.jpg'
+```
+
+Files are automatically stored and converted to `FileInput` objects. The agent receives the file with provider-specific optimization (inline base64, file upload API, or URL reference depending on the LLM provider).
+
+#### Option 2: JSON kickoff (no files)
+
+```bash
+# Without files (JSON) — same endpoint
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"company_name": "Einstein"}}'
+```
+
+#### Option 3: Separate upload + kickoff
+
+This is an alternative to multipart upload when you need to upload files separately from the kickoff request. Upload files first, then reference them by URL:
+
+```bash
+# Step 1: Upload
+curl -X POST https://your-deployment.crewai.com/files \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -F 'file=@/path/to/photo.jpg' \
+ -F 'field_name=cover_image'
+# Returns: {"url": "https://...", "field_name": "cover_image"}
+
+# Step 2: Kickoff with URL
+curl -X POST https://your-deployment.crewai.com/kickoff \
+ -H 'Authorization: Bearer YOUR_TOKEN' \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"company_name": "Einstein"}, "input_files": {"cover_image": "https://..."}}'
+```
+
+See the Platform API documentation for full `/files` endpoint details.
+
+#### On CrewAI Platform
+
+When using the Platform UI, file-typed fields automatically render as drag-and-drop upload zones. No API calls needed—just drop the file and click Run.
+
## Persistência de Flow
O decorador @persist permite a persistência automática do estado nos flows do CrewAI, garantindo que você mantenha o estado do flow entre reinicializações ou execuções diferentes do workflow. Esse decorador pode ser aplicado tanto ao nível de classe, quanto ao nível de método, oferecendo flexibilidade sobre como gerenciar a persistência do estado.