---
title: "POST /api/database/tables/{table_id}/import/async/"
method: POST
path: "/api/database/tables/{table_id}/import/async/"
tags: ["Database tables"]
---

# POST /api/database/tables/{table_id}/import/async/

`POST /api/database/tables/{table_id}/import/async/`

Import data in the specified table if the authorized user has access to the related database's workspace. This endpoint is asynchronous and return the created job to track the progress of the task.

## Path parameters

- `table_id` integer, required

## Request body

- TableImport
  - `data` array[], required — A list of rows you want to add to the specified table. Each row is a list of values, one for each **writable** field. The field values must be ordered according to the field order in the table, or according to `configuration.import_fields` when provided. All values must be compatible with the corresponding field type. Ex: ```json [ ["row1_field1_value", "row1_field2_value"], ["row2_field1_value", "row2_field2_value"], ] ``` for adding two rows to a table with two writable fields.
    - unknown[]
      - unknown
  - `configuration` TableImportConfiguration — Additional table import configuration.
    - `import_fields` integer[], nullable — The ordered field IDs corresponding to the values in each imported row. This snapshots the import schema so field reordering or permission changes cannot reinterpret positional values while the job is queued.
    - `upsert_fields` integer[], nullable — <function TableImportConfiguration.<lambda> at 0x7f8345f516f0>
    - `upsert_values` array[], nullable — A list of values that are identifying rows in imported data. The number of rows in `upsert_values` should be equal to the number of rows in imported data. Each row in `upsert_values` should contain a list of values that match the number and field types of fields selected in `upsert_fields`. Based on `upsert_fields`, a similar upsert values will be calculated for each row in the table. There's no guarantee of uniqueness of row identification calculated from `upsert_values` nor from the table. Repeated upsert values are compared in order with matching values in the table. The imported data must be in the same order as the table rows for correct matching.
      - unknown[]
        - unknown
    - `skipped_fields` integer[], nullable — A list of field IDs that should not be overwritten during upsert operations.
  - `importer_type` string — The frontend importer identifier used to parse the file.
  - `original_file_name` string — The original name of the uploaded file.

## Response `202`

- FileImportJobTypeResponse
  - `id` integer, required
  - `type` string, required — The type of the job.
  - `progress_percentage` integer, required — A percentage indicating how far along the job is. 100 means that it's finished.
  - `state` string, required — Indicates the state of the import job.
  - `human_readable_error` string — A human readable error message indicating what went wrong.
  - `error_code` string — A machine readable error code indicating why the job failed.
  - `created_on` string, date-time, required
  - `updated_on` string, date-time, required
  - `database_id` integer, required — Database id where the table will be created.
  - `name` string — The name of the new table.
  - `table_id` integer — Table id where the data will be imported.
  - `first_row_header` boolean
  - `importer_type` string — The frontend importer identifier used to parse the file.
  - `original_file_name` string — The original name of the uploaded file.
  - `report` Report, required
    - `failing_rows` object, required — An object containing field in error by rows. The keys are the row indexes from original file and values are objects of errors by fields.

## Other responses

- `400`
- `404`

## Changes

- **2026-08-27** `f3396317d932` — 3 info
  - added the new optional request property `configuration/import_fields` (media type: application/json)
  - added the new optional request property `configuration/import_fields` (media type: application/x-www-form-urlencoded)
  - added the new optional request property `configuration/import_fields` (media type: multipart/form-data)
- **2026-08-12** `ea4a3480f8d3` — 1 info
  - added the optional property `error_code` to the response with the `202` status

[Change history](https://skmtc.dev/baserow/apis/baserow-api-spec/changes/api/database/tables/:table_id/import/async/post.md)

---

[API](https://skmtc.dev/baserow/apis/baserow-api-spec.md) · [All operations](https://skmtc.dev/baserow/apis/baserow-api-spec/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/baserow/baserow-api-spec/revisions/f3396317d932/schema)
