Use the v3 write API to write data
Use the /api/v3/write_lp
endpoint to write data to InfluxDB 3 Core.
This endpoint accepts the same line protocol syntax as previous versions of InfluxDB, and supports the following:
Query parameters
?accept_partial=<BOOLEAN>
: Accept or reject partial writes (default istrue
).?no_sync=<BOOLEAN>
: Control when writes are acknowledged:no_sync=true
: Acknowledges writes before WAL persistence completes.no_sync=false
: Acknowledges writes after WAL persistence completes (default).
?precision=<PRECISION>
: Specify the precision of the timestamp. By default, InfluxDB 3 Core uses the timestamp magnitude to auto-detect the precision. To avoid any ambiguity, you can specify the precision of timestamps in your data.The InfluxDB 3 Core
/api/v3/write_lp
API endpoint supports the following timestamp precisions:ns
(nanoseconds)us
(microseconds)ms
(milliseconds)s
(seconds)
Request body
- Line protocol
POST /api/v3/write_lp?db=mydb&precision=nanosecond&accept_partial=true&no_sync=false
The following example uses cURL to send a write request using the Home sensor sample data, but you can use any HTTP client.
InfluxDB client libraries
InfluxData provides supported InfluxDB 3 client libraries that you can integrate with your code to construct data as time series points, and then write them as line protocol to an InfluxDB 3 Core database. For more information, see how to use InfluxDB client libraries to write data.
Partial writes
The /api/v3/write_lp
endpoint lets you accept or reject partial writes using
the accept_partial
parameter. This parameter changes the behavior of the API
when the write request contains invalid line protocol or schema conflicts.
For example, the following line protocol contains two points, each using a
different datatype for the temp
field, which causes a schema conflict:
home,room=Sunroom temp=96 1735545600
home,room=Sunroom temp="hi" 1735549200
Accept partial writes
With accept_partial=true
(default), InfluxDB:
- Accepts and writes line
1
- Rejects line
2
- Returns a
400 Bad Request
status code and the following response body:
< HTTP/1.1 400 Bad Request
...
{
"error": "partial write of line protocol occurred",
"data": [
{
"original_line": "home,room=Sunroom temp=hi 1735549200",
"line_number": 2,
"error_message": "invalid column type for column 'temp', expected iox::column_type::field::float, got iox::column_type::field::string"
}
]
}
Do not accept partial writes
With accept_partial=false
, InfluxDB:
- Rejects all points in the batch
- Returns a
400 Bad Request
status code and the following response body:
< HTTP/1.1 400 Bad Request
...
{
"error": "parsing failed for write_lp endpoint",
"data": {
"original_line": "home,room=Sunroom temp=hi 1735549200",
"line_number": 2,
"error_message": "invalid column type for column 'temp', expected iox::column_type::field::float, got iox::column_type::field::string"
}
}
For more information about the ingest path and data flow, see Data durability.
Write responses
By default, InfluxDB 3 Core acknowledges writes after flushing the WAL file to the Object store (occurring every second). For high write throughput, you can send multiple concurrent write requests.
Use no_sync for immediate write responses
To reduce the latency of writes, use the no_sync
write option, which
acknowledges writes before WAL persistence completes.
When no_sync=true
, InfluxDB validates the data, writes the data to the WAL,
and then immediately responds to the client, without waiting for persistence to
the Object store.
Using no_sync=true
is best when prioritizing high-throughput writes over
absolute durability.
- Default behavior (
no_sync=false
): Waits for data to be written to the Object store before acknowledging the write. Reduces the risk of data loss, but increases the latency of the response. - With
no_sync=true
: Reduces write latency, but increases the risk of data loss in case of a crash before WAL persistence.
The following example immediately returns a response without waiting for WAL persistence:
curl "http://localhost:8181/api/v3/write_lp?db=sensors&no_sync=true" \
--data-raw "home,room=Sunroom temp=96"
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB 3 Core and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support. Customers using a trial license can email trial@influxdata.com for assistance.