Skip to content

Bulk vendor ingest

POST
/vendors/imports
curl --request POST \
--url https://api.vendorica.com/v1/vendors/imports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "label": "example", "matchKey": { "key": "name", "mode": "create-only" }, "enrich": true, "vendors": [ { "additionalProperty": "example" } ] }'

Programmatic bulk import: rows keyed by importable vendor field names (plus custom: for assigned custom fields), string cell values. Runs the same reference-aware validate → dedupe → commit pipeline as the import wizard, mints an IMP-{n} history entry, and respects the plan’s per-import row quota. matchKey.mode upsert updates existing matches (blank cells never overwrite); enrich=true fills empty countryOfRegistration from GLEIF on checksum-valid LEIs (bounded, best-effort). Requires the vendors.bulk_import and vendors.import_integrations plan features (402 otherwise). Synchronous: the outcome (imported/updated/skipped/failed + per-row errors) is in the response.

Vendor rows + options

Media typeapplication/json
object
label
string
>= 1 characters <= 255 characters
matchKey
object
key
string
default: name
Allowed values: name website vatNumber lei
mode
string
default: create-only
Allowed values: create-only upsert
enrich
boolean
vendors
required
Array<object>
>= 1 items <= 10000 items
object
key
additional properties
string
<= 4000 characters

Success

Media typeapplication/json
object
success
required
boolean
data
required
object
job
required
object
id
required
string format: uuid
displayId
required
string
status
required
string
rowsTotal
required
integer
rowsImported
required
integer
rowsUpdated
required
integer
rowsSkipped
required
integer
rowsFailed
required
integer
key
additional properties
summary
required
object
imported
required
integer
updated
required
integer
skipped
required
integer
failed
required
integer
timestamp
required
string format: date-time
requestId
string
message
string
Example
{
"success": true,
"data": {
"job": {
"id": "f00e1550-382b-4016-8193-d10f06b21451",
"displayId": "string",
"status": "string",
"rowsTotal": 1,
"rowsImported": 1,
"rowsUpdated": 1,
"rowsSkipped": 1,
"rowsFailed": 1
},
"summary": {
"imported": 1,
"updated": 1,
"skipped": 1,
"failed": 1
}
},
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H",
"message": "string"
}

Validation error

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Bad request",
"code": "BAD_REQUEST",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Unauthorized

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Unauthorized",
"code": "UNAUTHORIZED",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Forbidden — missing scope

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Forbidden",
"code": "FORBIDDEN",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Not found

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Resource not found",
"code": "NOT_FOUND",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Rate limit exceeded

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Too many requests",
"code": "TOO_MANY_REQUESTS",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}