Import suppliers and their primary contacts from a CSV
Uploads a CSV of suppliers and their primary contacts. Send it as multipart/form-data under the field name file, with a content type of text/csv or text/plain; the delimiter is sniffed rather than assumed, so a semicolon or a tab file is read as readily as a comma one.
Required columns: supplier_id, supplier_name, contact_name, contact_email, contact_phone. Any other column the importer knows is optional. Rows with no supplier_id are dropped and duplicate supplier_ids are collapsed to the first.
The supplier_id here is yours, which is what separates this from create_supplier: that call derives an id from the name, this one keeps the id your system of record already uses.
It answers 200 with {"status": "success"}, not the {message, data} envelope every other operation answers. A missing file, an unsupported content type, a missing required column, an unreadable file or one that is empty after filtering is refused 400.
Scope: suppliers:write, which includes suppliers:read.
Request
- Base URL: https://api.app.tightly.io
- URL: https://api.app.tightly.io/api/v1/inventory/suppliers/upload
- Auth: HTTP bearer
Headers
The date train to answer on. One train exists today, 2026-11, the one this reference describes and the one every key is minted on, so the call answers on it with or without this header. Send it anyway, so a client built now names its train from the start.
A string of your own, up to 255 characters, that makes this write safe to retry. Send the same key twice and the second request is answered with the first one's status and body instead of writing again, so a client that retried after a timeout ends holding the record's id rather than creating a second one. Reusing a key with a different body, or while the first request is still running, is refused 409. A write that failed releases its key. Keys answer for 24 hours and belong to the API key that used them. A key longer than 255 characters is ignored and the write goes ahead without the guarantee.
Response
The file was read and its rows were written. Not the standard envelope.
Changes
No recorded changes to this operation across all 1 revision of this API.