Skip to content

Import a CSV

POST
/v1/items/imports
curl --request POST \
--url 'https://api.threadkite.app/v1/items/imports?type=product' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@file

Adds or updates an item for every valid row, matched on the row id (or a vehicle’s VIN or registration) so importing an updated file again updates the same items. Invalid rows are skipped and reported.

type

Import as this item type whatever the columns look like

string
>= 1 characters <= 50 characters
Allowed values: product vehicle

Import as this item type whatever the columns look like

locationId

Put every item at this location

string format: uuid

Put every item at this location

Media typemultipart/form-data
object
file
required

CSV or TSV, up to 10 MB

string format: binary
Media typeapplication/json
object
format
required
string
Allowed values: google_merchant meta_catalogue threadkite meta_automotive google_vehicle_ads
formatLabel
required
string
itemType
required
string
itemTypeLabel
required
string
rows
required

Data rows in the file

number
valid
required

Rows that can be imported

number
invalid
required

Rows with problems; they are skipped

number
missingColumns
required

Required fields the file has no column for, with the column to add

Array<string>
errors
required

The first 100 problems

Array<object>
object
line
required

Line in the file (the header is line 1)

number
externalId
required
string
nullable
messages
required
Array<string>
created
required
number
updated
required
number

Example

{
"format": "google_merchant",
"formatLabel": "Google Merchant Center product feed",
"itemType": "product",
"itemTypeLabel": "products",
"missingColumns": [
"Price (price)"
],
"errors": [
{
"line": 4,
"messages": [
"Enter the make"
]
}
]
}
Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Missing or invalid API key

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

The organisation is on the Free plan (code upgrade_required)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
feature
required

The feature that needs Pro

string
nullable
Allowed values: extraSeats connections aiAssistant aiReplies rules fullReports api inboxes bulkMessages videoMessages
upgradePath
required

Where to upgrade or pay, in the web app

string

Example

{
"statusCode": 402,
"code": "upgrade_required",
"message": "Connections are part of Pro. Upgrade to connect texts, calls and more.",
"feature": "extraSeats",
"upgradePath": "/settings/billing"
}

The key does not have the scope (or the person the permission)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}
Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Rate limit reached

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
retryAfter
required

Seconds until another request will be accepted

number

Example

{
"statusCode": 429,
"code": "rate_limited",
"message": "Too many requests. Each key can make 120 requests a minute; try again in 12 seconds.",
"retryAfter": 12
}