curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/imports \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"importId": "<string>"
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/imports"
payload = { "importId": "<string>" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({importId: '<string>'})
};
fetch('https://api.tryfuse.ai/api/v1/business/imports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"import": {
"importId": "dXBsb2Fkcy82OGExZjIwYjljNDFkMjAwMTRiM2U5MDEvM2Y2ZjBlMmEtOGQ0Yi00ZTFhLTk3YzItNWQ4YjFmMGUyYTdjLmNzdg",
"filename": "leads.csv",
"rowCount": 1240,
"headers": [
"First Name",
"Last Name",
"Email",
"Company",
"Tel",
"Deal stage"
],
"sampleRows": [
{
"First Name": "Sam",
"Last Name": "Rivera",
"Email": "sam@brightpay.com",
"Company": "Brightpay",
"Tel": "+13015023231",
"Deal stage": "Discovery"
},
{
"First Name": "Ada",
"Last Name": "Nwosu",
"Email": "ada@brightpay.com",
"Company": "Brightpay",
"Tel": "+13015023232",
"Deal stage": "Proposal"
}
],
"suggestedMapping": {
"First Name": "First Name",
"Last Name": "Last Name",
"Email": "Email",
"Company": "Company",
"Tel": "Phone",
"Deal stage": null
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Start an import (parse + suggested mapping)
Starts an import from a spreadsheet. Two intake shapes: a multipart request carrying the file (CSV/XLS/XLSX, ≤10MB — larger files go through POST /business/imports/presign first) or a JSON body naming a presigned upload’s importId. The call only parses: it answers 200 with the mapping-confirmation payload — rowCount, the detected headers, up to five sampleRows, and suggestedMapping (source header → standard field label such as First Name, Email, Company; null when nothing was suggested) — and stores that suggestion on the import. Nothing is written to any list until POST /business/imports/{importId}/commit, which is the only call that takes a destination. Parsing spends no credits.
Errors:
400IMPORT_FILE_MISSING— Neither a multipart file part nor an importId was sent.404IMPORT_NOT_FOUND— importId does not decode to an upload of the token owner, or the uploaded object is gone.409IMPORT_ALREADY_COMMITTED— The import was already committed; a committed file is never re-parsed. Upload it again for a new import.422IMPORT_FILE_UNSUPPORTED— The multipart part carries no Content-Type or one that is not CSV/XLS/XLSX, or the file could not be parsed.422IMPORT_FILE_TOO_LARGE— Multipart file over 10MB, or a presigned object over 50MB.422IMPORT_FILE_EMPTY— The file has no data rows.422VALIDATION_FAILED— A body key other than importId (destination fields belong to the commit call).429RATE_LIMITED— The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.
Requires one of the following token scopes: lists.
curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/imports \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"importId": "<string>"
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/imports"
payload = { "importId": "<string>" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({importId: '<string>'})
};
fetch('https://api.tryfuse.ai/api/v1/business/imports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"import": {
"importId": "dXBsb2Fkcy82OGExZjIwYjljNDFkMjAwMTRiM2U5MDEvM2Y2ZjBlMmEtOGQ0Yi00ZTFhLTk3YzItNWQ4YjFmMGUyYTdjLmNzdg",
"filename": "leads.csv",
"rowCount": 1240,
"headers": [
"First Name",
"Last Name",
"Email",
"Company",
"Tel",
"Deal stage"
],
"sampleRows": [
{
"First Name": "Sam",
"Last Name": "Rivera",
"Email": "sam@brightpay.com",
"Company": "Brightpay",
"Tel": "+13015023231",
"Deal stage": "Discovery"
},
{
"First Name": "Ada",
"Last Name": "Nwosu",
"Email": "ada@brightpay.com",
"Company": "Brightpay",
"Tel": "+13015023232",
"Deal stage": "Proposal"
}
],
"suggestedMapping": {
"First Name": "First Name",
"Last Name": "Last Name",
"Email": "Email",
"Company": "Company",
"Tel": "Phone",
"Deal stage": null
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Authorizations
Your API token (af_…) as the Basic-auth username, with an empty password.
Body
The importId returned by POST /business/imports/presign, once the file has been PUT to its uploadUrl; omit when the file is sent as a multipart part of this request.
8 - 800Response
Success
Show child attributes
Show child attributes