curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/lists/save-to-list \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceListId": "<string>",
"limit": 5000
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/lists/save-to-list"
payload = {
"sourceListId": "<string>",
"limit": 5000
}
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({sourceListId: '<string>', limit: 5000})
};
fetch('https://api.tryfuse.ai/api/v1/business/lists/save-to-list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"listIds": [
"68a1f20b9c41d20014b3e944"
]
}{
"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>"
}
}Copy rows from one list into another
Copies up to limit rows from sourceListId (a contact list) into a contact list named by listId or listName (create-or-reuse by exact, case-insensitive name; a name shared by two lists is 409 LIST_NAME_AMBIGUOUS, a reserved system title is 422 LIST_NAME_RESERVED). A listId destination that is not the token owner’s answers 404 LIST_NOT_FOUND before anything is dispatched. filters narrows the copied rows in the same row-filter language as GET /business/lists/{listId}/rows. Async: 202 means the copy started and listIds[0] is the destination; poll GET /business/lists/{listId} until its completionStatus is complete. The source list is not validated up front — a bad source surfaces as a job that never fills the destination.
Errors:
404LIST_NOT_FOUND— The destination listId is not a list visible to the token owner.409LIST_NAME_TAKEN— Creating the destination by listName collided with an existing name.409LIST_NAME_AMBIGUOUS— More than one list carries listName — reference the destination by id.422LIST_NAME_RESERVED— listName is a system/dynamic list title and cannot be a destination.422VALIDATION_FAILED— Missing sourceListId/limit, both or neither of listId/listName, or limit outside 1-10000.429RATE_LIMITED— The lists rate bucket is exhausted.
Requires one of the following token scopes: lists.
curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/lists/save-to-list \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceListId": "<string>",
"limit": 5000
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/lists/save-to-list"
payload = {
"sourceListId": "<string>",
"limit": 5000
}
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({sourceListId: '<string>', limit: 5000})
};
fetch('https://api.tryfuse.ai/api/v1/business/lists/save-to-list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"listIds": [
"68a1f20b9c41d20014b3e944"
]
}{
"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
24-character hex id of the contact list whose rows are copied.
Maximum number of rows to copy (1-10000).
1 <= x <= 10000Optional row-filter object narrowing which source rows are copied, in the same language as the filters query of GET /business/lists/{listId}/rows. Text keys (name, title, dept, level, industryName, country, state, personalLocation, companyName, companyIndustry, companyHeadQuartersCountry, companyLocation, website, campaignEngagement, otherLists) take an array of accepted values, e.g. {"companyName":["pomelo"]} or {"country":["argentina"]}, or {"include":[...],"exclude":[...]} — otherLists takes list NAMES, not ids; numberOfEmployees takes headcount ranges the same way but as STRINGS ("51-200", "10001+" or a bare head count "500" — an unquoted JSON number answers 500) and revenue a plain number; keywords (a wildcard match on the job title only) and linkedinUrl take one string; enrichedEmail, enrichedPhone and emailValidity take {"include":[...]} of their statuses; icpMatch takes ["yes"] or ["no"]; customColumns maps a column id to {"dataType":"string","include":[...]}, {"dataType":"boolean","value":true} or {"dataType":"number","rangeMin":1,"rangeMax":10}. Company lists honour companyName, companyIndustry, companyHeadQuartersCountry, website, numberOfEmployees, campaignEngagement and customColumns. Every key is optional; an unknown key or a wrong value shape is rejected rather than ignored. Values inside one key are OR-joined and different keys are AND-ed. VALUES ARE NOT VALIDATED: level, industryName, country, state, website and companyHeadQuartersCountry are matched as whole values and campaignEngagement, icpMatch and enum cells as exact strings, so a value in the wrong vocabulary is accepted and silently matches nothing — each key's own description names its vocabulary and the endpoint that serves it. A rejected filter answers 422 VALIDATION_FAILED.
Show child attributes
Show child attributes
24-character hex id of an existing contact list to copy into; mutually exclusive with listName.
Name of the destination contact list (1-255 characters): an existing list with this exact name (case-insensitive) is reused, otherwise it is created; two lists sharing the name answer 409 LIST_NAME_AMBIGUOUS and reserved system titles answer 422 LIST_NAME_RESERVED.
1 - 255Response
Success