GoliathDevelopersGet an API key
Guides / Call Lists API

Call Lists API

Build, page, edit and archive dialer call lists through the Goliath developer API

About

A call list is a fixed, ordered set of contacts for the power dialer. Build one from contact ids or a saved contact filter, page through its progress, add or remove contacts, and end or delete it when the campaign is over. Dialing itself happens in the app: the API hands you the link that opens a list in the dialer.

All operations go through the developer API gateway — one endpoint, called by operationId. If you haven’t set up a key yet, start with the Developer API Overview.

Operations

Reading lists (READ scope)

operationId Scope What it does
listCallLists READ The lists the key owner can open — their own and team-shared, newest first, at most 50. Narrow with status, mine, or orgVisible. Each row carries progress counts, the frozen build rules, the creator, who is dialing it right now, and dialPath.
getCallList READ One list with its progress and a position-keyed page of its contacts in dial order. limit defaults to 50 (max 200); pass the returned nextFromPosition as fromPosition to page on, and statuses to filter slots. A list that is gone or private to someone else is refused with an error.
getCallListDialLink READ The in-app path (/contacts?callListId=…) that opens the list in the dialer, for rendering as a button, plus who is dialing it now.

Building lists (WRITE scope)

operationId Scope What it does
createCallList WRITE Build a list from contactIds in the order given. Contacts the list cannot call are left off and counted in cannotCallCount; anything past 10,000 is dropped and counted in truncatedCount. Optional name, visibilityScope (USER by default), maxNumbersPerContact, includeRelatives, overrideDnc, overrideLitigator, and reachedTagId.
createCallListFromContactFilter WRITE The same build from a saved contact filter (filterId): its current matches for the key owner, up to 10,000.

Both accept buildAttemptKey: a retry with the same key returns the list the first attempt built instead of building a second one.

Editing lists (WRITE scope)

Only the list’s creator or an org admin can edit a list. Edits to an ENDED list are refused.

operationId Scope What it does
addCallListContacts WRITE Append contactIds after the last position. Contacts already on the list, uncallable, or over the cap are left off and counted.
removeCallListContacts WRITE Close not-yet-called contacts’ slots as skipped by hand (USER). Slots being dialed, already called, or up next for a rep working the list are left alone and counted in notRemovedCount. A removed contact keeps its slot and cannot be re-added.
renameCallList WRITE Rename a list.
endCallList WRITE Archive a list: it becomes ENDED, stays readable, and can no longer be dialed or edited.
deleteCallList WRITE Soft-delete a list: it disappears from Call lists for everyone. Calls already made stay on each contact’s timeline.

Example

Build a list from a saved contact filter, then fetch the link that opens it in the dialer:

curl -X POST https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer gsk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: build-list-2026-10-28" \
  -d '{ "operationId": "createCallListFromContactFilter", "variables": { "filterId": "FILTER_ID", "name": "Absentee owners — October" } }'
curl -X POST https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer gsk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "operationId": "getCallListDialLink", "variables": { "callListId": "CALL_LIST_ID" } }'

Full variable schemas, response shapes, and worked examples for every operation are available from the discovery endpoint.