GoliathDevelopersGet an API key
Guides / Files API

Files API

Exports, bulk skip traces, upload reports and export presets through the Goliath developer API

About

The Files area of the app holds what goes in and out of your account in bulk: uploads (imports) and downloads (spreadsheet exports). Through the API you can start exports and bulk skip traces, follow them to a finished file, read the report behind each upload, and manage the org’s export presets.

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

Browsing files (READ scope)

operationId Scope What it does
listFiles READ The Files list: uploads (imports) and downloads (standalone exports), filtered by a bulk-task filterTree (whether an upload or export exists, fileName, type). Page with limit/offset; limit is capped at 100.
getExportReport READ One export’s report: type, row count, the saved filter it ran from, and skip-trace and enrichment outcomes.
getUploadReport READ One upload’s report: rows and the created / matched / restored / merged / skipped / failed / duplicate counts, plus the skip-trace outcome and what it spent. Readable by the uploader or someone who can see all contacts.
listUploadReportRows READ The rows behind one report bucket: each row’s outcome and reason, the original CSV row, and the record it became. Page with limit/offset (max 100).

Exports and bulk skip traces (ADMIN scope)

These start the same jobs as the app’s download dialog and bulk skip trace. They are available to HTTP keys only, and the key owner must currently be an org admin.

operationId Scope What it does
exportContacts ADMIN Export contacts to a spreadsheet.
exportProperties ADMIN Export properties (by esId) to a spreadsheet. includeStreetViewImages adds a Street View link per row.
skipTraceContacts ADMIN Bulk skip trace contacts for phones and emails. skiptraceAddress picks which address to trace (omit for the default). One skip-trace credit per contact.
skipTraceAndExportProperties ADMIN Bulk skip trace properties and export owners, phones and emails to a spreadsheet. One skip-trace credit per property.
skipTraceAndCreateContactsFromProperties ADMIN Bulk skip trace properties and create a contact for each owner, optionally adding them to contactListIds and enrolling them in contactWorkflowIds. One skip-trace credit per property.

All five take the same selection: explicit ids, or a saved filterId with selectAll: true (every match; excludeIds leaves some out) or selectCount: N (the first N). totalCount and estimatedItemCount are how many records the selection holds — round up for a filter. fileName names the file. Each returns a bulkTaskId: poll it with getBulkTask, then read the file with getExportReport.

Managing files (WRITE scope)

operationId Scope What it does
renameDataExport WRITE Rename an export’s file. The list or tag the export made keeps its own name.
deleteDataExport WRITE Dismiss a failed standalone export from the list.
renameUploadedFile WRITE Rename an uploaded file — an upload’s file from listFiles (uploads[].file.id), or a file on a deal or contact.
deletePendingUpload WRITE Permanently remove an upload that is still awaiting review.

Export presets (READ + WRITE scopes)

operationId Scope What it does
listExportConfigurations READ The org’s saved export presets (the column layouts in the download dialog) and which one is the default. Creating or editing a preset stays in the app.
setDefaultExportConfiguration WRITE Make one preset the org’s default in the download dialog.
deleteExportConfiguration WRITE Permanently delete an export preset for the whole org.

To copy an upload’s original file into the Library, see copyUploadedFileToSpace on the Library API.

Example

Export every contact matching a saved filter, then follow the job:

curl -X POST https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer gsk_YOUR_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: export-hot-leads-2026-10-28" \
  -d '{ "operationId": "exportContacts", "variables": { "filterId": "FILTER_ID", "selectAll": true, "totalCount": 1200, "estimatedItemCount": 1200, "fileName": "hot-leads.csv" } }'
curl -X POST https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer gsk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "operationId": "getBulkTask", "variables": { "bulkTaskId": "BULK_TASK_ID" } }'

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