Testing

    Create test configurations, run test jobs against IVR systems, and retrieve results. Ideal for CI/CD integration.

    14 endpoints

    POST/testing/configs

    Create a new test configuration.

    Body Parameters

    NameTypeRequiredDescription
    namestringrequiredDisplay name for the test config
    phoneNumberstringrequiredPhone number to test in E.164 format
    stepsTestStep[]requiredArray of test steps defining the call flow
    namestringrequiredDisplay name for this step
    type'dtmf' | 'audio' | 'listen'requiredStep type: send DTMF tones, play audio, or listen for a response
    expectedstringrequiredExpected transcript to match against the IVR response
    thresholdnumberrequiredSimilarity percentage required for a match (0-100, default 90)
    timeoutnumberrequiredMax seconds to wait for a match before failing the step
    delaynumberoptionalSend DTMF after N seconds even if threshold not met
    dtmfstringoptionalDTMF digit(s) to send (e.g. "1", "123")
    audioUrlstringoptionalURL of audio file to play (for type: audio)
    profileItemIdstringoptionalReference to a profile item for data or voice

    Request

    bash
    curl -X POST -H "x-api-key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"name":"Sales Flow Test","phoneNumber":"+441234567890","steps":[{"action":"dtmf","value":"1"}]}' \
      https://api.nopaque.co.uk/testing/configs

    Response

    json
    {
      "id": "cfg_abc123",
      "name": "Sales Flow Test",
      "phoneNumber": "+441234567890",
      "steps": [
        {
          "action": "dtmf",
          "value": "1"
        }
      ],
      "createdAt": "2026-04-10T12: 00: 00Z"
    }
    GET/testing/configs

    List all test configurations in the workspace.

    Query Parameters

    NameTypeRequiredDescription
    limitnumberoptionalMaximum items to return (default 50)
    nextTokenstringoptionalPagination token from previous response

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/configs

    Response

    json
    {
      "items": [
        {
          "id": "cfg_abc123",
          "name": "Sales Flow Test",
          "phoneNumber": "+441234567890",
          "createdAt": "2026-04-10T12: 00: 00Z"
        }
      ],
      "nextToken": null
    }
    GET/testing/configs/{id}

    Get a specific test configuration by ID.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredTest configuration ID

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/configs/cfg_abc123

    Response

    json
    {
      "id": "cfg_abc123",
      "name": "Sales Flow Test",
      "phoneNumber": "+441234567890",
      "steps": [
        {
          "action": "dtmf",
          "value": "1"
        }
      ],
      "createdAt": "2026-04-10T12: 00: 00Z"
    }
    PUT/testing/configs/{id}

    Update a test configuration.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredTest configuration ID

    Body Parameters

    NameTypeRequiredDescription
    namestringoptionalUpdated display name
    phoneNumberstringoptionalUpdated phone number
    stepsTestStep[]optionalUpdated test steps
    namestringrequiredDisplay name for this step
    type'dtmf' | 'audio' | 'listen'requiredStep type: send DTMF tones, play audio, or listen for a response
    expectedstringrequiredExpected transcript to match against the IVR response
    thresholdnumberrequiredSimilarity percentage required for a match (0-100, default 90)
    timeoutnumberrequiredMax seconds to wait for a match before failing the step
    delaynumberoptionalSend DTMF after N seconds even if threshold not met
    dtmfstringoptionalDTMF digit(s) to send (e.g. "1", "123")
    audioUrlstringoptionalURL of audio file to play (for type: audio)
    profileItemIdstringoptionalReference to a profile item for data or voice

    Request

    bash
    curl -X PUT -H "x-api-key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"name":"Updated Sales Flow"}' \
      https://api.nopaque.co.uk/testing/configs/cfg_abc123

    Response

    json
    {
      "id": "cfg_abc123",
      "name": "Updated Sales Flow",
      "updatedAt": "2026-04-10T12: 10: 00Z"
    }
    DELETE/testing/configs/{id}

    Delete a test configuration.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredTest configuration ID

    Request

    bash
    curl -X DELETE -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/configs/cfg_abc123

    Response

    json
    {
      "message": "Test configuration deleted successfully"
    }
    POST/testing/jobs

    Create a new test job from a configuration.

    Body Parameters

    NameTypeRequiredDescription
    configIdstringrequiredTest configuration ID to use
    namestringoptionalOptional name override for this job

    Request

    bash
    curl -X POST -H "x-api-key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"configId":"cfg_abc123"}' \
      https://api.nopaque.co.uk/testing/jobs

    Response

    json
    {
      "id": "job_abc123",
      "configId": "cfg_abc123",
      "status": "created",
      "createdAt": "2026-04-10T12: 00: 00Z"
    }
    GET/testing/jobs

    List all test jobs in the workspace.

    Query Parameters

    NameTypeRequiredDescription
    limitnumberoptionalMaximum items to return (default 50)
    nextTokenstringoptionalPagination token from previous response

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/jobs

    Response

    json
    {
      "items": [
        {
          "id": "job_abc123",
          "configId": "cfg_abc123",
          "status": "completed",
          "createdAt": "2026-04-10T12: 00: 00Z"
        }
      ],
      "nextToken": null
    }
    GET/testing/jobs/{id}

    Get a specific test job by ID.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredTest job ID

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/jobs/job_abc123

    Response

    json
    {
      "id": "job_abc123",
      "configId": "cfg_abc123",
      "status": "completed",
      "createdAt": "2026-04-10T12: 00: 00Z",
      "completedAt": "2026-04-10T12: 05: 00Z"
    }
    DELETE/testing/jobs/{id}

    Delete a test job and its results.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredTest job ID

    Request

    bash
    curl -X DELETE -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/jobs/job_abc123

    Response

    json
    {
      "message": "Test job deleted successfully"
    }
    POST/testing/runs

    Start a test run. Pass exactly one of jobId (run an existing scheduled test job) or testConfigId (ad-hoc run directly from a test config).

    Body Parameters

    NameTypeRequiredDescription
    jobIdstringoptionalTest job ID to run. Pass this OR testConfigId (exactly one required).
    testConfigIdstringoptionalTest config ID for an ad-hoc run (no saved job needed). Pass this OR jobId (exactly one required).

    Request

    bash
    curl -X POST -H "x-api-key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"testConfigId":"cfg_abc123"}' \
      https://api.nopaque.co.uk/testing/runs

    Response

    json
    {
      "message": "Test run started",
      "run": {
        "id": "run_def456",
        "jobId": "job_abc123",
        "testConfigId": "cfg_abc123",
        "status": "pending",
        "startedAt": "2026-04-10T12: 15: 00Z"
      }
    }
    GET/testing/runs

    List test runs in the workspace. Filter by run type, outcome, phone number, config, or catalogue test, bound by start time, sort, and page with an opaque cursor. Items are slim run summaries.

    Query Parameters

    NameTypeRequiredDescription
    runTypestringoptionalFilter by run type: mission, compliance, standard, or param
    outcomestringoptionalFilter by outcome: PASS, FAIL, ERROR, INCONCLUSIVE, or pending
    phoneNumberstringoptionalFilter by phone number in E.164 format
    configIdstringoptionalFilter by test config id
    catalogueTestIdstringoptionalFilter by compliance catalogue test id
    jobIdstringoptionalFilter by test job id (legacy back-compat)
    startedAfterstringoptionalOnly return runs started at or after this ISO8601 datetime
    startedBeforestringoptionalOnly return runs started at or before this ISO8601 datetime
    sortBystringoptionalSort field: startedAt (default) or completedAt
    sortDirstringoptionalSort direction: asc or desc (default desc)
    limitnumberoptionalMaximum items to return, 1-200 (default 50)
    cursorstringoptionalOpaque pagination cursor from the previous response

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      "https://api.nopaque.co.uk/testing/runs?runType=mission&outcome=PASS&limit=10"

    Response

    json
    {
      "runs": [
        {
          "id": "run_def456",
          "workspaceId": "ws_abc123",
          "runType": "mission",
          "configId": "mtc_abc123",
          "status": "completed",
          "outcome": "PASS",
          "phoneNumber": "+441234567890",
          "mission": "Reset my online banking password",
          "passedSteps": 4,
          "failedSteps": 0,
          "callDurationSecs": 182,
          "startedAt": "2026-04-10T12: 15: 00Z",
          "completedAt": "2026-04-10T12: 18: 00Z"
        }
      ],
      "nextCursor": null
    }
    GET/testing/runs/aggregate

    Aggregate test runs into counts grouped by a dimension, with the same filters as the list endpoint. Supply an optional timeBucket to break the counts down by day, week, or month. Without a timeBucket the response returns groups; with one it returns buckets.

    Query Parameters

    NameTypeRequiredDescription
    groupBystringrequiredDimension to group by: outcome, runType, configId, catalogueTestId, or phoneNumber
    timeBucketstringoptionalBreak counts down over time: day, week, or month
    runTypestringoptionalFilter by run type: mission, compliance, standard, or param
    outcomestringoptionalFilter by outcome: PASS, FAIL, ERROR, INCONCLUSIVE, or pending
    phoneNumberstringoptionalFilter by phone number in E.164 format
    configIdstringoptionalFilter by test config id
    catalogueTestIdstringoptionalFilter by compliance catalogue test id
    startedAfterstringoptionalOnly include runs started at or after this ISO8601 datetime
    startedBeforestringoptionalOnly include runs started at or before this ISO8601 datetime

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      "https://api.nopaque.co.uk/testing/runs/aggregate?groupBy=outcome&runType=mission"

    Response

    json
    {
      "groups": [
        {
          "key": "PASS",
          "count": 42
        },
        {
          "key": "FAIL",
          "count": 7
        },
        {
          "key": "INCONCLUSIVE",
          "count": 3
        }
      ],
      "truncated": false,
      "totalGroups": 3
    }
    GET/testing/runs/{id}

    Get a specific test run by ID with full results. Completed runs may carry an optional callTelemetry object (schemaVersion 1) with telephony, quality, audio, cost, timing, and per-turn detail, and each step result may carry turnTelemetry. All telemetry fields are optional.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredTest run ID

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/runs/run_def456

    Response

    json
    {
      "id": "run_def456",
      "jobId": "job_abc123",
      "status": "completed",
      "result": "pass",
      "startedAt": "2026-04-10T12: 15: 00Z",
      "completedAt": "2026-04-10T12: 18: 00Z",
      "callTelemetry": {
        "schemaVersion": 1,
        "timing": {
          "totalCallSecs": 182
        },
        "cost": {
          "currency": "GBP",
          "totalMinorUnits": 14
        }
      }
    }
    GET/testing/mission-test-runs/{id}

    Get a single mission test run by id with its verdict and evidence. Mission tests have no step results, so the response carries verdict, judge reasoning, transcript, and compliance evidence rather than steps.

    Path Parameters

    NameTypeRequiredDescription
    idstringrequiredMission test run id

    Request

    bash
    curl -H "x-api-key: YOUR_API_KEY" \
      https://api.nopaque.co.uk/testing/mission-test-runs/mtr_abc123

    Response

    json
    {
      "id": "mtr_abc123",
      "workspaceId": "ws_abc123",
      "configId": "mtc_abc123",
      "status": "completed",
      "outcome": "PASS",
      "sector": "banking",
      "mission": "Reset my online banking password",
      "acceptance": "Agent verifies identity and resets password",
      "passed": true,
      "verdict": "pass",
      "passReasoning": "The agent verified identity and completed the reset.",
      "judgeReasoning": "All acceptance criteria met with no compliance breaches.",
      "phoneNumber": "+441234567890",
      "startedAt": "2026-05-06T12: 00: 00Z",
      "completedAt": "2026-05-06T12: 05: 00Z"
    }