Line Protocol Bulk Import
Import InfluxDB Line Protocol files into Arc. Enables one-command migration from InfluxDB by uploading .lp or .txt files (plain or gzip-compressed).
Line Protocol bulk import is available starting Arc v26.02.1 (February 2026).
This page covers bulk file import via POST /api/v1/import/lp. For streaming ingestion of Line Protocol data (real-time writes), see the Line Protocol write endpoints in the API Reference.
Endpoint
POST /api/v1/import/lp
Headers
| Header | Required | Default | Description |
|---|---|---|---|
Authorization | Yes | - | Bearer $ARC_TOKEN |
X-Arc-Database | Yes | - | Target database name (or use db query param) |
Query Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
measurement | No | (all) | Filter to a single measurement from the LP file |
precision | No | ns | Timestamp precision: ns, us, ms, s |
Basic Example
curl -X POST "http://localhost:8000/api/v1/import/lp" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "X-Arc-Database: mydb" \
-F "file=@export.lp"
Example with Precision
# Import LP file with second-precision timestamps
curl -X POST "http://localhost:8000/api/v1/import/lp?precision=s" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "X-Arc-Database: mydb" \
-F "file=@export_seconds.lp"
Response
{
"status": "ok",
"result": {
"database": "mydb",
"measurements": ["cpu", "mem", "disk"],
"rows_imported": 150000,
"precision": "ns",
"duration_ms": 342
}
}
InfluxDB Migration
Export from InfluxDB and import directly into Arc. For InfluxDB 1.x, use influx_inspect export (the influx CLI does not support Line Protocol output):
# Export from InfluxDB 1.x (reads TSM and WAL directly)
influx_inspect export \
-datadir /var/lib/influxdb/data \
-waldir /var/lib/influxdb/wal \
-database mydb -lponly -out export.lp
# Import to Arc
curl -X POST "http://localhost:8000/api/v1/import/lp" \
-H "X-Arc-Database: mydb" \
-H "Authorization: Bearer $ARC_TOKEN" \
-F "file=@export.lp"
influx_inspect export writes one Line Protocol line per field, so a multi-field
point becomes several rows in Arc, each with one field populated. For multi-field
measurements, use tsm2arc, which rejoins
fields into a single point. See the full InfluxDB migration guide.
How It Works
Data flows through Arc's high-performance columnar ingest pipeline (ArrowBuffer -> ArrowWriter -> Parquet -> storage) -- the same path used by streaming LP ingestion. This means bulk imports benefit from the same throughput, sort optimization, and hourly partitioning.
Notes
- Multi-measurement -- a single LP file can contain multiple measurements; all are imported in one request.
- Precision-aware -- timestamps are losslessly converted from the specified precision to Arc's internal microsecond format.
- Gzip support -- compressed files (
.lp.gz) are automatically detected and decompressed via magic bytes. - RBAC -- write permissions are checked for every measurement in the file.
- Maximum file size: 500 MB (after decompression).
Error Responses
| Status | Description |
|---|---|
400 | Missing database, invalid precision, or no file uploaded |
403 | Insufficient write permissions for one or more measurements |
413 | File exceeds 500 MB size limit |
500 | Import execution error |