--- title: Troubleshoot issues writing data seotitle: Troubleshoot issues writing data to InfluxDB weight: 106 description: > Troubleshoot issues writing data. Find response codes for failed writes. Discover how writes fail, from exceeding rate or payload limits, to syntax errors and schema conflicts. menu: influxdb_2_1: name: Troubleshoot issues parent: Write data influxdb/v2.1/tags: [write, line protocol, errors] related: - /influxdb/v2.1/api/#tag/Write, InfluxDB API /write endpoint - /influxdb/v2.1/reference/internals - /influxdb/v2.1/reference/cli/influx/write --- Learn how to handle and recover from errors when writing to InfluxDB. - [Discover common failure scenarios](#discover-common-failure-scenarios) - [Review HTTP status codes](#review-http-status-codes) - [Troubleshoot failures](#troubleshoot-failures) ## Discover common failure scenarios Write requests made to InfluxDB may fail for a number of reasons. Common failure scenarios that return an HTTP `4xx` or `5xx` error status code include the following: - API token was invalid. . See how to [manage API tokens](/influxdb/v2.0/security/tokens/). - Payload size was too large. - Client or server reached a timeout threshold. - Data was not formatted correctly. To find the causes of a specific error, [review HTTP status codes](#review-http-status-codes). ### Troubleshoot partial writes Writes may fail partially or completely even though InfluxDB returns an HTTP `2xx` status code for a valid request. For example, a partial write may occur when InfluxDB writes all points that conform to the bucket schema, but rejects points that have the wrong data type in a field. To resolve partial writes and rejected points, see [troubleshoot failures](#troubleshoot-failures). ## Review HTTP status codes InfluxDB uses conventional HTTP status codes to indicate the success or failure of a request. Write requests return the following status codes: - `204` **Success**: InfluxDB validated the request data format and accepted the data for writing to the bucket. {{% note %}} `204` doesn't indicate a successful write operation since writes are asynchronous. If some of your data did not write to the bucket, see how to [troubleshoot rejected points](#troubleshoot-rejected-points). {{% /note %}} - `400` **Bad request**: The [line protocol](/influxdb/v2.1/reference/syntax/line-protocol/) data in the request was malformed. The response body contains the first malformed line in the data. All request data was rejected and not written. - `401` **Unauthorized**: May indicate one of the following: - [`Authorization: Token` header](/influxdb/v2.1/api-guide/api_intro/#authentication) is missing or malformed. - [API token](/influxdb/v2.1/api-guide/api_intro/#authentication) value is missing from the header. - API token does not have sufficient permissions to write to the organization and the bucket. For more information about token types and permissions, see [Manage API tokens](/influxdb/v2.1/security/tokens/) - `404` **Not found**: A requested resource (e.g. an organization or bucket) was not found. The response body contains the requested resource type, e.g. "organization", and resource name. - `413` **Request entity too large**: All request data was rejected and not written. InfluxDB OSS only returns this error if the [Go (golang) `ioutil.ReadAll()`](https://pkg.go.dev/io/ioutil#ReadAll) function raises an error. - `500` **Internal server error**: Default HTTP status for an error. - `503` **Service unavailable**: Server is temporarily unavailable to accept writes. The `Retry-After` header describes when to try the write again. The `message` property of the response body may contain additional details about the error. ## Troubleshoot failures If you notice data is missing in your bucket, do the following: - Check the `message` property in the response body for details about the error - Verify all lines contain valid syntax, e.g. [line protocol](/influxdb/v2.1/reference/syntax/line-protocol/) or [CSV](/influxdb/v2.1/reference/syntax/annotated-csv/) - Verify the data types match other data points with the same series. For example, did you attempt to write `string` data to an `int` field? - Verify the timestamps match the [precision parameter](/influxdb/v2.1/write-data/#timestamp-precision). - Minimize payload size and network errors by [optimizing writes](/influxdb/v2.1/write-data/best-practices/optimize-writes/) ### Troubleshoot rejected points InfluxDB may reject points even if the HTTP request returns "Success". If some of your data did not write to the bucket, check for [field type](/influxdb/v2.1/reference/key-concepts/data-elements/#field-value) differences between the missing data point and other points that have the same [series](/influxdb/v2.1/reference/key-concepts/data-elements/#series). For example, did you attempt to write `string` data to an `int` field? InfluxDB rejects points for the following reasons: - The **batch** contains another point with the same series, but one of the fields has a different value type. - The **bucket** contains another point with the same series, but one of the fields has a different value type.