Export API

6 min read

The export API provides RAW data available in Salted CX so you can import it into your data storage, analytics solution, business intelligence, or AI tools.

The API is intended for low-frequency batch use, such as daily exports. We might restrict access to the API or rate-limit its use due to excessive usage. The API limit for an exported date range is 24 hours. You have to export data in 24 hours batches.

Authentication

All endpoints require a valid API key in the Authorization header:

Authorization: Bearer <your-api-key>
Ask a Salted CX contact person to share the API Key with you in a secure way.

Workflow

  1. Initiate an export via POST /api/v1/export — returns an exportId and a statusUrl
  1. Poll the status via GET /api/v1/export/{exportId}/status until status is COMPLETED
  1. Download the CSV files using the downloadUrls from the completed status response (URLs are valid for 1 hour)

Endpoints

POST /api/v1/export

Initiates an asynchronous export. The export runs in the background; use the status endpoint to track progress.

Query Parameters

ParameterRequiredDescription
fromYesStart of the date range (ISO 8601), e.g. 2024-01-01T00:00:00Z
toYesEnd of the date range (ISO 8601), e.g. 2024-01-02T00:00:00Z
includeNoComma-separated list of datasets to export. Default: all. Valid values: engagement, customer, turn, review, agent
contactNoEmail or phone number to filter by a specific customer profile

Constraints

  • The date range (to minus from) must not exceed 24 hours
  • from must be before to

Response (200)

{
  "exportId": "a1b2c3d4-...",
  "statusUrl": "api/v1/export/a1b2c3d4-.../status"
}

Errors (400)

CodeDescription
INVALID_DATE_RANGEfrom is not before to, or range exceeds 24 hours
INVALID_INCLUDEUnknown dataset name in include
EMPTY_INCLUDEinclude parameter is present but empty
CONTACT_NOT_FOUNDThe contact value could not be resolved
NO_CUSTOMERS_FOR_CONTACTContact was found but has no associated customer records

GET /api/v1/export/{exportId}/status

Returns the current status of an export job. Once completed, includes presigned download URLs.

Response (200)

{
  "exportId": "a1b2c3d4-...",
  "status": "COMPLETED",
  "downloadUrls": {
    "engagement": "https://s3.eu-..../engagements.csv?...",
    "customer": "https://s3.eu-..../customers.csv?...",
    "turn": "https://s3.eu-..../turns.csv?...",
    "review": "https://s3.eu-..../reviews.csv?...",
    "agent": "https://s3.eu-..../agents.csv?..."
  },
  "error": null
}

Status Values

StatusdownloadUrlsDescription
PROCESSINGempty {}Export is running
COMPLETEDpopulatedFiles are ready to download (URLs valid for 1 hour)
FAILEDempty {}Export failed — see error field

404 — Export not found or does not belong to your account.


GET /api/v1/export/history

Returns the most recent exports for your account (up to 100).

Response (200): Array of status objects (same shape as the status endpoint).

Datasets & CSV Columns

engagement (engagements.csv)

ColumnTypeDescription
piduuidEngagement ID
external_idstringExternal system ID
namestringEngagement name
linkstringLink to the engagement
agent_piduuidAgent ID
agent_namestringAgent name
contact_piduuidCustomer ID
contact_namestringCustomer name
conversation_start_timetimestampStart of the conversation
start_timetimestampStart of the engagement
end_timetimestampEnd of the engagement
conversation_iduuidConversation ID
conversation_external_idstringExternal conversation ID
channel_typestringChannel type (CHAT, EMAIL, VOICE...)
directionstringInbound / Outbound
statusstringEngagement status
typestringEngagement type
outcome_typestringOutcome type
service_levelstringService level
terminated_bystringWho terminated the engagement
initiated_bystringWho initiated the engagement
resolutionstringResolution
channelstringChannel name
queuestringQueue name
teamstringTeam name
departmentstringDepartment name
outcomestringOutcome name
outcome_categorystringOutcome category
reasonstringReason name
reason_categorystringReason category
case_namestringCase name
platformstringPlatform name
sourcestringSource name
languagestringLanguage
channel_vendorstringChannel vendor
categorystringCategory
campaignstringCampaign
prioritystringPriority
menu_pathstringMenu path
flowstringFlow name
servicestringService name
company_contactstringCompany contact name
brandstringBrand
topic_categorystringTopic category
topicstringTopic
attribute_01attribute_04stringCustom attributes
agent_locationstringAgent location
agent_rolestringAgent role
agent_organizationstringAgent organization
external_agent_namestringExternal agent name
costdecimalCost
engagement_timeintegerEngagement time (ms)
focus_timeintegerFocus time (ms)
hold_timeintegerHold time (ms)
invitation_timeintegerInvitation time (ms)
menu_timeintegerMenu time (ms)
preparation_timeintegerPreparation time (ms)
wait_timeintegerWait time (ms)
wrap_up_timeintegerWrap-up time (ms)
total_timelongTotal time (ms)
engagement_fact_01engagement_fact_03decimalCustom facts
wait_for_customer_timeintegerWait for customer time (ms)
order_agent_engagementsintegerOrder of agent engagements in conversation
total_conversation_agent_engagementsintegerTotal agent engagements in conversation
adaptabilitydecimalAI-scored adaptability
adherencedecimalAI-scored adherence
claritydecimalAI-scored clarity
completenessdecimalAI-scored completeness
customer_satisfactiondecimalAI-scored customer satisfaction
empathydecimalAI-scored empathy
expressed_satisfactiondecimalAI-scored expressed satisfaction
language_skillsdecimalAI-scored language skills
persuasiondecimalAI-scored persuasion
severitydecimalAI-scored severity
understandingdecimalAI-scored understanding

customer (customers.csv)

ColumnTypeDescription
piduuidCustomer ID
external_idstringExternal system ID
namestringCustomer name
linkstringLink to the customer
typestringCustomer type
categorystringCategory
segmentstringSegment
organizationstringOrganization
regionstringRegion
countrystringCountry
statestringState

turn (turns.csv)

ColumnTypeDescription
piduuidTurn ID
engagement_piduuidParent engagement ID
turn_timetimestampTimestamp of the turn
turn_time_relative_msintegerTime relative to engagement start (ms)
response_touuidPID of the turn this responds to
participantstringAGENT or CUSTOMER
typestringTurn type
originstringOrigin
categorystringTurn category
durationintegerDuration (ms)
lengthintegerCharacter length
sentimentdecimalSentiment score
confidencedecimalConfidence score
qualitydecimalQuality score
external_idstringExternal ID
contentstringTurn text content
content_agentstringAgent-side content
content_customerstringCustomer-side content
language_agentstringAgent language
language_customerstringCustomer language
language_contentstringContent language

review (reviews.csv)

ColumnTypeDescription
piduuidReview ID
engagement_piduuidReviewed engagement ID
turn_piduuidReviewed turn ID (if applicable)
reviewer_piduuidReviewer ID
reviewer_namestringReviewer name
question_piduuidQuestion ID
question_namestringQuestion text
question_typestringQuestion type
question_built_inbooleanWhether question is built-in
question_descriptionstringQuestion description
question_business_goalstringQuestion business goal
question_category_piduuidQuestion category ID
question_category_namestringQuestion category name
review_timetimestampTimestamp
review_session_idstringReview session ID
statusstringReview status
samplingstringSampling method
typestringReview type
kindstringReview kind
answer_piduuidAnswer ID
answer_namestringAnswer text
answer_reason_piduuidAnswer reason ID
answer_reasonstringAnswer reason text
confidencedecimalConfidence score
scoredecimalScore
answer_scoredecimalAnswer score
worst_scoredecimalWorst possible score
best_scoredecimalBest possible score
commentstringReviewer comment
comment_translatedstringTranslated comment
comment_languagestringComment language
comment_translated_languagestringTranslated language
verifiedstringWhether verified
verified_bystringVerified by
verification_commentstringVerification comment
answer_typestringAnswer type
versionstringVersion
form_idstringForm ID
engagement_start_timetimestampEngagement start time
agent_piduuidAgent ID

agent (agents.csv)

ColumnTypeDescription
piduuidAgent ID
external_idstringExternal system ID
namestringAgent name
statusstringAgent status
typestringAgent type
hourly_costdecimalHourly cost
engagement_costdecimalPer-engagement cost
teamstringTeam
departmentstringDepartment
locationstringLocation
organizationstringOrganization
rolestringRole
managerstringManager name

service (services.csv)

ColumnTypeDescription
piduuidService ID
external_idstringExternal system ID
namestringService name
statusstringService status
partnerstringPartner name
partner_managerstringPartner manager name
verticalstringVertical
regionstringRegion
countrystringCountry
tierstringTier
partner_sizestringPartner size
partner_tierstringPartner tier
categorystringCategory
attribute_01attribute_03stringCustom attributes

Example

The example below shows how to run the export from your console or terminal.

# 1. Start export
curl -X POST "https://api.eu.salted.cx/api/v1/export?from=2024-01-01T00:00:00Z&to=2024-01-02T00:00:00Z&include=engagement,turn" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Response: {"exportId":"abc-123","statusUrl":"api/v1/export/abc-123/status"}

# 2. Poll status
curl "https://api.eu.salted.cx/api/v1/export/abc-123/status" \
  -H "Authorization: Bearer YOUR_API_KEY"

# 3. When status is COMPLETED, download CSVs from the downloadUrls
curl -o engagements.csv "https://s3.eu-....engagements.csv?X-Amz-..."
curl -o turns.csv "https://s3.eu-....turns.csv?X-Amz-..."
Did this answer your question?