Preview an import
/imports/previewCosts 2 rate-limit points · Rate limits
Check CSV text (csv) before importing it, as the bulk import page's preview and column mapping steps do: the headers, the first rows per column, a suggested column_mapping for POST /imports, and the same row checks the import runs (unknown files, SKUs or urls), without importing anything.
Read-only. Send the column_mapping you intend to import with to check those columns; without it the template order (sku, filename, external_url, data_type, link_to_product, custom_product) is checked.
Also searched aspreview csv importcheck my csvvalidate import filemap csv columns
Request body
csvstringRequiredExample:sku,filename,external_url,data_type,link_to_product,custo…filenameanycolumn_mappingany
Returns
headersarray of stringssample_columnsobjectShow 6 child attributesHide child attributes
skuarray of stringsfilenamearray of stringsexternal_urlarray of stringsdata_typearray of stringslink_to_productarray of stringscustom_productarray of strings
suggested_column_mappingobjectShow 6 child attributesHide child attributes
skuinteger, nullableExample:0filenameinteger, nullableExample:1external_urlinteger, nullableExample:2data_typeinteger, nullableExample:3link_to_productinteger, nullableExample:4custom_productinteger, nullableExample:5
validationobjectShow 7 child attributesHide child attributes
total_rowsinteger, nullableExample:1valid_rowsinteger, nullableExample:1has_warningsboolean, nullableExample:falsefilename_errorsarray of anysvariant_errorsarray of anysurl_errorsarray of anysreference_summaryobject
Errors
Missing or invalid API key.
The request failed validation, or sent a key the action does not take (code: "unknown_parameters" with unknown and accepted). Nothing was saved.
Rate limited. Cost-weighted per API key, shared with API v1: a read costs 1 point, a write 2, 40 points per fixed 60-second window. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix time the window ends); a 429 adds Retry-After (seconds), retry_after, retryable: true and a next_step in the body. A 429 did nothing: wait retry_after seconds, then send the same request again. The budget is per key, so every tool or script using the key shares it; prefer one list call with per_page over many single reads.
Every error has the same shape: see Errors.
curl -X POST "https://app.filemonk.io/api/v2/external/imports/preview" \
-H "X-Auth-Token: $FILEMONK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"csv": "sku,filename,external_url,data_type,link_to_product,custom_product\nWATERCOLOUR-1,guide.pdf,,sku,yes,no\n"
}'const res = await fetch("https://app.filemonk.io/api/v2/external/imports/preview", {
method: "POST",
headers: {
"X-Auth-Token": process.env.FILEMONK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"csv": "sku,filename,external_url,data_type,link_to_product,custom_product\nWATERCOLOUR-1,guide.pdf,,sku,yes,no\n"
}),
});
const data = await res.json();import os
import requests
res = requests.post(
"https://app.filemonk.io/api/v2/external/imports/preview",
headers={"X-Auth-Token": os.environ["FILEMONK_API_KEY"]},
json={
"csv": "sku,filename,external_url,data_type,link_to_product,custom_product\nWATERCOLOUR-1,guide.pdf,,sku,yes,no\n"
},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.filemonk.io/api/v2/external/imports/preview")
req = Net::HTTP::Post.new(uri, "X-Auth-Token" => ENV["FILEMONK_API_KEY"], "Content-Type" => "application/json")
req.body = {
csv: "sku,filename,external_url,data_type,link_to_product,custom_product\nWATERCOLOUR-1,guide.pdf,,sku,yes,no\n"
}.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"headers": [
"sku",
"filename",
"external_url",
"data_type",
"link_to_product",
"custom_product"
],
"sample_columns": {
"sku": [
"WATERCOLOUR-1"
],
"filename": [
"guide.pdf"
],
"external_url": [
""
],
"data_type": [
"sku"
],
"link_to_product": [
"yes"
],
"custom_product": [
"no"
]
},
"suggested_column_mapping": {
"sku": 0,
"filename": 1,
"external_url": 2,
"data_type": 3,
"link_to_product": 4,
"custom_product": 5
},
"validation": {
"total_rows": 1,
"valid_rows": 1,
"has_warnings": false,
"filename_errors": [],
"variant_errors": [],
"url_errors": [],
"reference_summary": {}
}
}{
"errors": [
"Invalid API key"
]
}{
"errors": [
"access.download_limit_count must be an integer of at least 0"
],
"field_errors": {
"access.download_limit_count": [
"must be an integer of at least 0"
]
}
}{
"errors": [
"You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
],
"code": "rate_limited",
"retry_after": 12,
"error": "Rate limit exceeded",
"message": "You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
}