Imports
Imports allow you to load large volumes of products into your catalog from CSV, Excel, JSON, or XML files. Jobs are processed asynchronously — poll the status endpoint or use a webhook to know when they complete.
Create an import
Starts a new import job. Upload a file via multipart/form-data.
Body parameters (multipart/form-data)
- Name
file- Type
- file
- Description
The import file. Accepted formats:
.csv,.xlsx,.json,.xml.
- Name
supplier_code- Type
- string
- Description
Supplier code to associate with all imported products.
- Name
dry_run- Type
- boolean
- Description
Validate the file without persisting any changes (default:
false).
Supported formats
| Format | Extension | Notes |
|---|---|---|
| CSV | .csv | Delimiter ,, encoding UTF-8 |
| Excel | .xlsx | First sheet is used |
| JSON | .json | Array of objects |
| XML | .xml | Flat structure |
Request
curl -X POST https://api.pixeepim.com/api/v1/imports/jobs \
-H "Authorization: Bearer {api_key}" \
-F "file=@catalog.csv" \
-F "supplier_code=SUPPLIER_A"
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "analyzing",
"file_name": "catalog.csv",
"file_type": "csv"
}
Get import status
Returns the current status and progress of an import job.
Path parameters
- Name
id- Type
- string
- Description
The import job UUID.
Import statuses
| Status | Description |
|---|---|
pending | Queued, not yet started |
analyzing | File is being parsed and validated |
ready | Dry-run complete, awaiting confirmation |
processing | Currently importing rows |
completed | Finished successfully |
failed | Aborted due to a critical error |
cancelled | Cancelled by the user |
Request
curl https://api.pixeepim.com/api/v1/imports/jobs/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer {api_key}"
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"file_name": "catalog.csv",
"file_type": "csv",
"file_size": 1024000,
"status": "completed",
"total_rows": 1250,
"successful_rows": 1245,
"failed_rows": 5,
"products_created": 980,
"products_updated": 265,
"started_at": "2026-03-15T09:00:00Z",
"completed_at": "2026-03-15T09:02:34Z",
"error_summary": "5 rows failed EAN validation"
}
Control a job
You can pause, resume, or cancel a running import job.
| Endpoint | Effect |
|---|---|
POST /imports/jobs/{id}/pause | Pause a running job |
POST /imports/jobs/{id}/resume | Resume a paused job |
POST /imports/jobs/{id}/cancel | Cancel and discard the job |
Request
curl -X POST https://api.pixeepim.com/api/v1/imports/jobs/550e8400-e29b-41d4-a716-446655440000/cancel \
-H "Authorization: Bearer {api_key}"
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "cancelled"
}
Get import logs
Returns per-row logs for a job, including validation errors and warnings.
Query parameters
- Name
level- Type
- string
- Description
Filter by severity:
error,warning, orinfo.
- Name
skip- Type
- integer
- Description
Offset (default: 0).
- Name
limit- Type
- integer
- Description
Items per page, max 200 (default: 50).
Request
curl "https://api.pixeepim.com/api/v1/imports/jobs/550e8400-e29b-41d4-a716-446655440000/logs?level=error" \
-H "Authorization: Bearer {api_key}"
Response
{
"items": [
{
"row_number": 42,
"level": "error",
"field": "ean",
"message": "EAN format invalid (expected 13 digits)",
"value": "123ABC7890",
"timestamp": "2026-03-15T09:01:30Z"
}
],
"meta": {
"total": 5,
"page": 1,
"per_page": 50,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}
Preview import
Returns a sample of parsed rows before the import is committed. Useful to verify column mapping.
Query parameters
- Name
limit- Type
- integer
- Description
Number of preview rows (default: 10).
Request
curl "https://api.pixeepim.com/api/v1/imports/jobs/550e8400-e29b-41d4-a716-446655440000/preview?limit=5" \
-H "Authorization: Bearer {api_key}"
Response
{
"total_rows": 1250,
"preview": [
{
"ean": "3760000000001",
"name": "Produit exemple",
"price": 29.99
}
],
"validation_errors": []
}
Automated imports
Create a recurring import that pulls files from a remote source on a schedule.
Body parameters
- Name
name- Type
- string
- Description
Descriptive name for the automation.
- Name
supplier_code- Type
- string
- Description
Supplier code to associate with imported products.
- Name
schedule- Type
- string
- Description
Cron expression (e.g.
0 2 * * *for daily at 2 AM).
- Name
file_source- Type
- object
- Description
Source configuration. Supported types:
sftp,ftp,http.
- Name
mapping- Type
- object
- Description
Column mapping: file column → product field.
- Name
is_active- Type
- boolean
- Description
Enable the schedule immediately (default:
true).
Request
curl -X POST https://api.pixeepim.com/api/v1/imports/automations \
-H "Authorization: Bearer {api_key}" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily Supplier A Import",
"supplier_code": "SUPPLIER_A",
"schedule": "0 2 * * *",
"file_source": {
"type": "sftp",
"host": "sftp.supplier.com",
"username": "user",
"path": "/exports/products.csv"
},
"mapping": {
"EAN": "ean",
"Titre": "name",
"Prix HT": "price"
}
}'
Response
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Daily Supplier A Import",
"schedule": "0 2 * * *",
"is_active": true,
"created_at": "2026-03-15T09:00:00Z"
}