Skip to main content
POST
Upload a contact file

Authorizations

Authorization
string
header
required

Project API key (sk_api_…).

Body

multipart/form-data
file
file
required

The contact file, up to 10 MB. CSV or .xlsx, detected from the contents rather than the filename. Only the first sheet of a workbook is read.

Response

The stored upload and what parsing it produced. A missing name or phone column is not an error — it lands in mappingIssues and the affected rows count as excluded.

summary
object
detectedMapping
object

The mapping applied. Overrides you sent are resolved to header names — an A1 letter comes back as its header — and the rest is auto-detected.

sample
object[]

First 10 contacts that would be called, after normalization.

total
integer

Data rows read, excluding the header. summary.willBeCalled and the summary.excluded counts add up to this.

columns
string[]

Headers as parsed, in file order — the choices for a mapping override.

mappingIssues
enum<string>[]

Columns that resolved to nothing. Check this first when everything is excluded — an unmapped phone column makes every number look invalid.

Available options:
phoneColumnNotFound,
nameColumnNotFound
uploadId
string<uuid>

Handle for the stored rows. Uploads are scoped to the API key's project and cannot be deleted.