#
API Reference
Laravel Ingest exposes a RESTful API for managing and monitoring import processes. All endpoints are prefixed with /api/v1/ingest (configurable via config/ingest.php).
#
Authentication
The API routes are wrapped in the api middleware group by default. You will typically need to provide an authentication token (e.g., Sanctum or Passport) in the Authorization header.
#
List Ingest Runs
Retrieves a paginated list of all ingest runs, sorted by the most recent.
- Endpoint:
GET / - Success Response:
200 OKwith a paginated JSON object ofIngestRunResource objects.
curl -X GET -H "Authorization: Bearer <token>" https://myapp.com/api/v1/ingest
#
Show Ingest Run Details
Retrieves the details of a single ingest run, including its rows.
- Endpoint:
GET /{ingestRun} - URL Parameters:
ingestRun(integer, required): The ID of the ingest run.
- Success Response:
200 OKwith a singleIngestRunResource object.
curl -X GET -H "Authorization: Bearer <token>" https://myapp.com/api/v1/ingest/123
#
Upload File and Start Run
Starts a new ingest run from a file upload.
- Endpoint:
POST /upload/{importerSlug} - URL Parameters:
importerSlug(string, required): The slug of the importer definition (e.g.,user-importer).
- Body (
multipart/form-data):file(file, required): The data file to import (e.g., CSV, XLSX).dry_run(boolean, optional): If1ortrue, performs a simulation without saving data.
- Success Response:
202 Acceptedwith the newly createdIngestRunResource .
curl -X POST \
-H "Authorization: Bearer <token>" \
-F "file=@/path/to/data.csv" \
https://myapp.com/api/v1/ingest/upload/user-importer
#
Trigger Non-Upload Run
Starts a new ingest run for a source that does not require a file upload (e.g., FTP, URL).
- Endpoint:
POST /trigger/{importerSlug} - URL Parameters:
importerSlug(string, required): The slug of the importer definition.
- Success Response:
202 Acceptedwith the newly createdIngestRunResource .
curl -X POST \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/trigger/daily-stock-importer
#
Cancel Ingest Run
Sends a cancellation request to a running ingest batch.
- Endpoint:
POST /{ingestRun}/cancel - URL Parameters:
ingestRun(integer, required): The ID of the ingest run to cancel.
- Success Response:
200 OKwith{"message": "Cancellation request sent."}.
curl -X POST \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/123/cancel
#
Retry Failed Ingest Run
Creates a new ingest run containing only the failed rows from a previous run.
- Endpoint:
POST /{ingestRun}/retry - URL Parameters:
ingestRun(integer, required): The ID of the original run with failed rows.
- Body (
application/json, optional):{"dry_run": true}
- Success Response:
202 Acceptedwith the newly created retryIngestRunResource . - Error Response:
400 Bad Requestif the original run has no failed rows.
curl -X POST \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
https://myapp.com/api/v1/ingest/123/retry
#
Get Error Summary
Retrieves an aggregated summary of errors for a specific ingest run. Useful for quickly understanding the most common issues without fetching all failed rows.
- Endpoint:
GET /{ingestRun}/errors/summary - URL Parameters:
ingestRun(integer, required): The ID of the ingest run.
- Success Response:
200 OKwith anIngestErrorSummaryResource object.
curl -X GET \
-H "Authorization: Bearer <token>" \
https://myapp.com/api/v1/ingest/123/errors/summary
#
Download Failed Rows as CSV
Downloads a CSV file containing only the failed rows from an ingest run. The CSV includes all original data columns plus _error_message and _row_number columns. This enables a "Fix & Re-Upload" workflow.
- Endpoint:
GET /{ingestRun}/failed-rows/download - URL Parameters:
ingestRun(integer, required): The ID of the ingest run.
- Success Response:
200 OKwith a streamed CSV file download. - Error Response:
404 Not Foundif the run has no failed rows.
curl -X GET \
-H "Authorization: Bearer <token>" \
-o failed-rows.csv \
https://myapp.com/api/v1/ingest/123/failed-rows/download
#
IngestErrorSummaryResource Object
The JSON representation for an error analysis summary.
{
"data": {
"total_failed_rows": 15,
"error_summary": [
{ "message": "Duplicate entry found for key 'email'.", "count": 8 },
{ "message": "The given data was invalid.", "count": 7 }
],
"validation_summary": [
{ "message": "email: The email field is required.", "count": 5 },
{ "message": "name: The name must be at least 2 characters.", "count": 2 }
]
}
}
#
IngestRunResource Object
The standard JSON representation for an ingest run.
{
"data": {
"id": 123,
"importer": "user-importer",
"status": "processing",
"user_id": 1,
"original_filename": "users.csv",
"progress": {
"total": 1000,
"processed": 500,
"successful": 498,
"failed": 2
},
"summary": null,
"started_at": "2023-10-27T10:00:00.000000Z",
"completed_at": null,
"rows": [ /* collection of IngestRowResource objects */ ]
}
}