Overview
Bulk Import is ideal for:- Migrating content from other systems
- Loading large document collections
- Populating a datasource with pre-structured data
- Batch creation with consistent metadata
- JSON File — array of objects
- Validation — checked against the metadata schema
- Default Values Assignment — fills in missing optional fields
- Content Mapping — selects which field becomes resource content
- Optional Translation — translates content if enabled
- Batch Creation — creates resources in batches
- Resource Monitoring — tracks progress in real time
Key Differences: Upload vs Import
- Drag & Drop Upload
- Bulk Import
For: Individual or bulk file uploads
- Upload files (PDF, images, etc.)
- Minimal configuration needed
- Fast for a few dozen files
- Example: Upload 10 PDFs at once
Bulk Import Workflow
Step 1: Prepare JSON File
Create a JSON file with an array of objects:- Valid JSON format (array at root level)
- Maximum 1,000 items per file
- Maximum 10 MB file size
Step 2: Validation Against Metadata Schema
The system compares your JSON fields against the datasource’smetadata_schema:
- Datasource schema:
author(str, required)category(str, required)tags(str, optional)
- Validation results:
- Item 1: Has all required fields
- Item 2: Missing
tagsfield (optional — will use default)
Step 3: Assign Default Values
Provide default values for missing optional fields:Step 4: Resource Creation
The system processes your JSON in batches: Processing Details:- Batch size: 10 resources simultaneously
- Retry attempts: 3 with exponential backoff
- Rate limit: 10 resources/second per project
- Translation: Optional via core agent
Step 5: Monitor & Download Results
Real-time progress tracking:- Queued: 500
- Processing: 47
- Successful: 453
- Failed: 0
- Item-by-item status
- Error messages for failures
- Success confirmations
- Retry history
JSON Schema Validation
Example Datasource Schema
Example JSON to Import
Validation Output
Feature: Auto-Translation
Enable optional automatic translation during import:Configuration
How It Works
- For each JSON item, the content field is translated
- Translation is done via the core agent translator
- Original language metadata is preserved
- Marked as
translated: truein extra_info
Processing Impact
- Time: +20-40% per item (includes API latency)
- Tokens: Uses LLM tokens from your project
- Cost: Charged to your project’s consumption
Example Workflows
Scenario 1: Blog Articles
JSON structure:Scenario 2: Product Catalog
JSON structure:Scenario 3: Multilingual Content
JSON structure:Limits & Constraints
File Size
Maximum 10 MB per import file
Item Count
Maximum 1,000 items per file
Batch Size
10 resources processed simultaneously
Rate Limit
10 resources/second per project
Field Limits
- String fields: Max 10,000 characters
- Number fields: Standard JSON number limits
- Array fields: Max 100 items per array
Error Handling
- Retry attempts: 3 per failed resource
- Backoff strategy: Exponential (1s, 2s, 4s)
- Failed items: Retryable separately
Best Practices
Validate JSON First
Use a JSON validator before importing
Test Small Batch
Import 10-20 items first to verify
Meaningful Content Field
Choose the field with main content
Smart Defaults
Provide sensible default values
Preparation Checklist
- ✅ Valid JSON format (valid array)
- ✅ All required metadata schema fields present
- ✅ Correct data types for fields
- ✅ Content field contains meaningful text
- ✅ File size under 10 MB
- ✅ Item count under 1,000
- ✅ Default values for optional fields
- ✅ Translation language selected (if enabled)
Troubleshooting
Invalid JSON Format
Invalid JSON Format
Symptom: Upload fails immediatelySolution:
- Validate JSON syntax at jsonlint.com
- Ensure array at root level:
[...] - Check no trailing commas
- Verify all quotes are proper JSON quotes
Missing Required Fields
Missing Required Fields
Symptom: Item validation failsSolution:
- Check datasource metadata schema
- Provide default value for missing field
- Or add field to JSON items
- Verify field names match exactly (case-sensitive)
Type Mismatch
Type Mismatch
Symptom: “expectedType: int, actualType: string”Solution:
- Convert value to correct type in JSON
- Example:
"priority": 5(not"5") - For booleans:
true/false(not"true")
Some Resources Failed
Some Resources Failed
Symptom: 950 succeeded, 50 failedSolution:
- Check error logs for failed items
- Fix issues in those specific items
- Re-import failed items separately
- Verify API connectivity for external lookups
Slow Processing
Slow Processing
Symptom: Import taking very longSolution:
- Translation enabled? Disable for speed
- Network bandwidth available?
- Consider splitting into smaller batches
- 10 resources/sec is expected rate
Next Steps
- Resource Types - Understand resource categories
- Resource Metadata - Configure metadata fields
- Datasource Schema - Define metadata schema
- Agent Configuration - Query imported resources