#
Monitoring, Cancellation, and Retries
After starting an import, you can monitor its progress, cancel it if necessary, or retry any failed rows. These actions can be performed via Artisan commands or the API.
#
Monitoring Status
Each import process creates an IngestRun record in the database. You can query this record to get detailed information about the status and progress of the import.
#
Via Artisan Command
Use the ingest:status command with the run ID.
php artisan ingest:status 1
This will display a detailed summary, including status, progress counts, and a progress bar for running imports. If the run failed, it will also display the error message.
#
Via API
Make a GET request to the show endpoint.
- Endpoint:
GET /api/v1/ingest/{ingestRun}
curl -X GET \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/1
The response will be a JSON object containing the full IngestRun details, including a list of all processed rows if the run is configured to log them.
#
Cancelling an Ingest Run
You can request to cancel a batch that is currently processing. This is useful if you start a large import by mistake.
Note: Cancellation sends a signal to the Laravel Queue batch. It may take a moment for currently processing jobs to finish before the batch is marked as cancelled.
#
Via Artisan Command
php artisan ingest:cancel 1
#
Via API
- Endpoint:
POST /api/v1/ingest/{ingestRun}/cancel
curl -X POST \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/1/cancel
#
Retrying Failed Rows
If an import completes with failed rows, you don't need to re-upload the entire file. You can create a new import run that consists only of the rows that failed in the original run.
#
Via Artisan Command
Use the ingest:retry command with the ID of the original failed run.
# Create a new run with the failed rows from run #1
php artisan ingest:retry 1
# You can also perform a dry run of the retry
php artisan ingest:retry 1 --dry-run
This will create a new IngestRun and queue the jobs. You will get a new run ID to monitor.
#
Via API
- Endpoint:
POST /api/v1/ingest/{ingestRun}/retry
curl -X POST \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/1/retry
The response will be the JSON representation of the new ingest run that has been created.
#
Analyzing Errors
For runs with failed rows, you can get an aggregated error summary to quickly identify the most common issues.
#
Via API
- Endpoint:
GET /api/v1/ingest/{ingestRun}/errors/summary
curl -X GET \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/1/errors/summary
The response groups errors by type and shows their frequency:
{
"data": {
"total_failed_rows": 15,
"error_summary": [
{ "message": "Duplicate entry found for key 'email'.", "count": 8 }
],
"validation_summary": [
{ "message": "email: The email field is required.", "count": 5 }
]
}
}