Downloads a specific table from an extraction as a CSV file. This endpoint returns the raw CSV data.
Usage Notes
This endpoint returns raw CSV data, not a JSON response
The CSV is formatted with a header row containing column names
Column names in the CSV match keys from the template table columns
Use the filter parameter to download only specific subsets of data:
filter=all - All rows (default)
filter=valid - Only rows that pass all validations
filter=invalid - Only rows that fail at least one validation
Large tables are downloaded in full with a limit of 500,000 rows
If you need paginated access to large tables, use the Get Extraction Table Rows endpoint instead
Request
The ID of the extraction.
The key of the table to download.
Filter the rows to include: - “all” - Include all rows (default) - “valid” -
Include only rows that pass all validations - “invalid” - Include only rows
that fail at least one validation
cURL
cURL with Filter
Node.js
Python
curl -X GET https://api.tableflow.com/v2/extractions/uT2bJNWN75YPU95r/tables/line_items/download \
-H "Authorization: Bearer YOUR_API_KEY" \
--output line_items.csv
Response
The response is the raw CSV data with a Content-Type header of text/csv. The Content-Disposition header will include a filename based on the table key.
For example, if the table key is “line_items”, the response headers might look like:
Content-Type: text/csv
Content-Disposition: attachment; filename="line_items.csv"
The CSV file will include:
A header row with column names
Data rows containing the table values
All columns defined in the template
Only the rows that match the filter criteria (if a filter is applied)
Here’s an example of how the CSV content might look:
Description,Quantity,Unit Price,Amount
Widget A,5,10.00,50.00
Widget B,3,15.00,45.00
Widget C,2,25.00,50.00
Widget D,1,100.00,100.00
Widget E,10,5.00,50.00
Error Responses
Error message describing what went wrong.