Load-test export files

    Export every call and step of a finished load-test run from its report page (Export data) or the API. You get a zip with calls.csv, steps.csv, calls.jsonl (the complete record), run.json and a README.md. The README inside each export is the authoritative description of that file.

    Reading the files

    • Join steps.csv to calls.csv on call_id.
    • An empty cell means "not measured", never zero.
    • Times are ISO 8601 in UTC.
    • Recordings are not in the zip: download one by recording_id with GET /audio/download-url?audioId=. Recordings older than 30 days are archived and may not download.
    • Runs transcribed through Telnyx have no per-word confidence or response latency.
    • Exports are kept for 30 days. You can export a run again at any time.

    Export with the API

    Endpoint: /testing/load-tests/{id}/exports. Needs the testing:read scope.

    bash
    # 1. Start an export of a finished run
    curl -X POST -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/load-tests/RUN_ID/exports
    # -> 202 {"export": {"exportId": "EXPORT_ID", "status": "pending", ...}}
    
    # 2. Poll until status is "ready" (usually under a minute)
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/load-tests/RUN_ID/exports/EXPORT_ID
    # -> 200 {"export": {"status": "ready", "downloadUrl": "https://...", ...}}
    
    # 3. Download the zip (the link is valid for 1 hour; poll again for a fresh one)
    curl -L -o export.zip "DOWNLOAD_URL"

    calls.csv

    ColumnUnitMeaningEmpty means
    call_idUnique id of this call. Joins to steps.csv `call_id` and to `id` in calls.jsonl.Never empty.
    load_test_run_idThe load-test run this call belongs to (the same for every row).Not reported for this call (for example, the call was never answered or the field predates this data).
    test_config_idThe test configuration the call executed.Not reported for this call (for example, the call was never answered or the field predates this data).
    statusCall record status: completed, failed, cancelled, running, or pending (created but never dialled).Never empty.
    outcomeTest verdict for the call: PASS, FAIL, ERROR or INCONCLUSIVE.The call did not finish.
    error_messageWhy the call failed or errored, when known.No error was recorded.
    passed_stepsNumber of steps that passed.The call did not report step results.
    failed_stepsNumber of steps that failed or timed out.The call did not report step results.
    dialed_atISO 8601 UTCWhen we dialled.Not reported for this call (for example, the call was never answered or the field predates this data).
    answered_atISO 8601 UTCWhen the far end answered.Not answered, or not reported.
    ended_atISO 8601 UTCWhen the call ended.Not reported for this call (for example, the call was never answered or the field predates this data).
    dial_to_answer_msmsTime from dialling to answer.Not answered, or not reported.
    answer_to_first_utterance_msmsTime from answer until the system under test first spoke.Not reported for this call (for example, the call was never answered or the field predates this data).
    call_duration_ssLength of the call.Not reported for this call (for example, the call was never answered or the field predates this data).
    to_numberE.164The number dialled.Not reported for this call (for example, the call was never answered or the field predates this data).
    caller_idE.164The caller ID presented on this call.Not reported (the platform default number was presented).
    caller_id_from_pooltrue when the caller ID was leased from the workspace's number pool for this call. The run-level split by source is in run.json stats.Never empty.
    terminal_statusHow the call ended, from the tester: completed, failed, no_answer, aborted_by_duration, aborted_by_inactivity, and so on.Not reported for this call (for example, the call was never answered or the field predates this data).
    hangup_causeCarrier hang-up cause (e.g. normal_clearing).Not reported for this call (for example, the call was never answered or the field predates this data).
    hangup_sourceWho hung up: caller (us) or callee.Not reported for this call (for example, the call was never answered or the field predates this data).
    sip_hangup_causeSIP response code behind the hang-up, when the carrier gave one.Not reported for this call (for example, the call was never answered or the field predates this data).
    estimated_mos1 to 4.5Estimated call quality (MOS) from the platform's own model (ITU-T G.107), using jitter and packet loss. This is the figure the run report uses.Not enough audio statistics to estimate.
    telnyx_mos_inbound1 to 4.5MOS as reported by the carrier (Telnyx) for audio we received. Close to 4.5 on nearly every call, so prefer estimated_mos.Not reported for this call (for example, the call was never answered or the field predates this data).
    telnyx_mos_outbound1 to 4.5MOS as reported by the carrier for audio we sent.Not reported for this call (for example, the call was never answered or the field predates this data).
    inbound_jitter_max_variance_msMaximum jitter variance on received audio, exactly as reported by the carrier. The unit is the carrier's; treat it as relative between calls.Not reported for this call (for example, the call was never answered or the field predates this data).
    inbound_packetsRTP packets received.Not reported for this call (for example, the call was never answered or the field predates this data).
    inbound_packets_lostRTP packets lost on the way to us.Not reported for this call (for example, the call was never answered or the field predates this data).
    outbound_packetsRTP packets sent.Not reported for this call (for example, the call was never answered or the field predates this data).
    outbound_packets_lostRTP packets we sent that were lost.Not reported for this call (for example, the call was never answered or the field predates this data).
    codecAudio codec negotiated on the call (e.g. PCMA).Not reported for this call (for example, the call was never answered or the field predates this data).
    audio_coverage0 to 1Share of the call during which we received audio frames.Not reported for this call (for example, the call was never answered or the field predates this data).
    recording_idId of the call recording. Download it with GET /audio/download-url?audioId=<recording_id>. Recordings older than 30 days are archived and may not download.No recording was saved.
    recording_duration_ssLength of the recording.No recording was saved.
    stt_providerSpeech-to-text path used for this run: deepgram (Deepgram direct) or telnyx (Telnyx, Deepgram engine). Telnyx returns no per-word data, so steps.csv word confidence and response latency are empty for telnyx runs.Not recorded: the run was started before the platform recorded the provider (Deepgram unless an operator had chosen Telnyx).

    steps.csv

    ColumnUnitMeaningEmpty means
    call_idThe call this step belongs to. Joins to calls.csv `call_id`.Never empty.
    step_indexPosition of the step in the test, from 0.Never empty.
    step_idId of the step in the test configuration.Not reported for this call (for example, the call was never answered or the field predates this data).
    step_nameName of the step in the test configuration.Not reported for this call (for example, the call was never answered or the field predates this data).
    step_typeWhat the step did: listen, audio (play a clip), dtmf, hold or wait.Not reported for this call (for example, the call was never answered or the field predates this data).
    outcomePASS, FAIL, TIMEOUT (nothing matched before the listen window closed) or ERROR.Never empty.
    error_messageWhy the step failed, when known.No error was recorded.
    expected_transcriptWhat the step expected to hear.The step does not listen.
    actual_transcriptWhat was transcribed.Nothing was transcribed for this step.
    similarity0 to 100How closely actual matched expected. Can come from an early partial match (the step passes as soon as enough of the prompt is heard), so a correct prompt can score below 100.The step does not listen.
    threshold0 to 100Similarity needed to pass.The step does not listen.
    started_atISO 8601 UTCWhen the step started.Not reported for this call (for example, the call was never answered or the field predates this data).
    ended_atISO 8601 UTCWhen the step ended.Not reported for this call (for example, the call was never answered or the field predates this data).
    duration_msmsHow long the step took.Not reported for this call (for example, the call was never answered or the field predates this data).
    response_latency_msmsFor an audio step: time from the end of the system's last word to our reply starting.Not an audio reply, or the run used the telnyx speech-to-text path (no word timings).
    avg_word_confidence0 to 1Speech-to-text engine's average confidence over the words in this step.No words were transcribed, or the run used the telnyx speech-to-text path.
    min_word_confidence0 to 1Lowest single-word confidence in this step.No words were transcribed, or the run used the telnyx speech-to-text path.
    word_countNumber of words transcribed in this step.No words were transcribed, or the run used the telnyx speech-to-text path.
    digits_sentDTMF digits we sent.Not a DTMF step.
    hold_secssHow long a hold step actually stayed on the line.Not a hold step.