Mapping
Create, manage, and run IVR mapping jobs. Map phone system menus by calling numbers, navigating DTMF and voice paths, and building a complete IVR tree.
16 endpoints
/mappingList mapping jobs in the workspace. Filter by phone number, name, profile, tag, or latest-run status, and page with an opaque cursor. Each item is a slim summary whose status reflects the latest run.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| phoneNumber | string | optional | Filter by exact phone number in E.164 format |
| name | string | optional | Filter by case-insensitive substring of the job name |
| profileId | string | optional | Filter by profile id (UUID) |
| tag | string | optional | Filter by a single lowercase tag (exact match) |
| status | string | optional | Filter by latest-run status: idle, running, completed, failed, or limited |
| createdAfter | string | optional | Only return jobs created at or after this ISO8601 datetime |
| createdBefore | string | optional | Only return jobs created at or before this ISO8601 datetime |
| sort | string | optional | Sort field. Only createdAt is supported (default) |
| sortDir | string | optional | Sort direction: asc or desc (default desc) |
| limit | number | optional | Maximum items to return, 1-100 (default 50) |
| cursor | string | optional | Opaque pagination cursor from the previous response |
Request
curl -H "x-api-key: YOUR_API_KEY" \
"https://api.nopaque.co.uk/mapping?status=completed&tag=production&limit=10"Response
{
"items": [
{
"id": "map_abc123",
"name": "Main IVR",
"phoneNumber": "+441234567890",
"status": "completed",
"tags": [
"production"
],
"runNumber": 3,
"profileId": "prof_xyz789",
"createdAt": "2026-04-10T12: 00: 00Z",
"updatedAt": "2026-04-10T12: 20: 00Z"
}
],
"nextCursor": null,
"nextToken": null
}/mapping/{id}Get a specific mapping job by ID. When a run has started, the response includes runNumber and a nested currentRun with live status and stats. currentRun is omitted (never null) when the job has no runs.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123Response
{
"id": "map_abc123",
"name": "Main IVR",
"phoneNumber": "+441234567890",
"status": "completed",
"mappingMode": "dtmf",
"tags": [
"production"
],
"runNumber": 3,
"currentRun": {
"id": "run_def456",
"status": "completed",
"runNumber": 3,
"stats": {
"stepsTotal": 12,
"stepsCompleted": 12
},
"inFlightCount": 0,
"startedAt": "2026-04-10T12: 15: 00Z",
"completedAt": "2026-04-10T12: 20: 00Z"
},
"createdAt": "2026-04-10T12: 00: 00Z",
"updatedAt": "2026-04-10T12: 05: 00Z"
}/mappingCreate a new mapping job.
Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | Display name for the mapping job |
| phoneNumber | string | required | Phone number to map in E.164 format (e.g., +441234567890) |
| mappingMode | string | required | Mapping mode: dtmf, dtmf-audio, or full-audio |
| profileId | string | optional | Profile ID for voice-capable modes |
| tags | string[] | optional | Up to 10 lowercase kebab-case tags (1-32 chars, pattern ^[a-z0-9][a-z0-9-]*$) for filtering and organisation |
Request
curl -X POST -H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Main IVR","phoneNumber":"+441234567890","mappingMode":"dtmf"}' \
https://api.nopaque.co.uk/mappingResponse
{
"id": "map_abc123",
"name": "Main IVR",
"phoneNumber": "+441234567890",
"mappingMode": "dtmf",
"status": "created",
"createdAt": "2026-04-10T12: 00: 00Z"
}/mapping/{id}Update a mapping job configuration.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | optional | Updated display name |
| phoneNumber | string | optional | Updated phone number in E.164 format |
| mappingMode | string | optional | Updated mapping mode |
| tags | string[] | optional | Replace the tag list. Up to 10 lowercase kebab-case tags (1-32 chars, pattern ^[a-z0-9][a-z0-9-]*$) |
Request
curl -X PATCH -H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Updated IVR Name"}' \
https://api.nopaque.co.uk/mapping/map_abc123Response
{
"id": "map_abc123",
"name": "Updated IVR Name",
"status": "created",
"updatedAt": "2026-04-10T12: 10: 00Z"
}/mapping/{id}Delete a mapping job and all associated data.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -X DELETE -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123Response
{
"message": "Mapping job deleted successfully"
}/mapping/{id}/startStart a mapping run for an existing job. Initiates phone calls to map the IVR tree.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -X POST -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/startResponse
{
"id": "map_abc123",
"runId": "run_def456",
"status": "running",
"startedAt": "2026-04-10T12: 15: 00Z"
}/mapping/{id}/cancelCancel a running mapping job.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -X POST -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/cancelResponse
{
"id": "map_abc123",
"status": "cancelled",
"cancelledAt": "2026-04-10T12: 20: 00Z"
}/mapping/attestSubmit a security probe attestation for probe-enabled mapping jobs.
Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| jobId | string | required | Mapping job ID |
Request
curl -X POST -H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jobId":"map_abc123"}' \
https://api.nopaque.co.uk/mapping/attestResponse
{
"attested": true
}/mapping/{id}/stepsGet all orchestration steps for a mapping job.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/stepsResponse
{
"items": [
{
"stepId": "step_001",
"path": "/",
"status": "completed",
"dtmfOption": "1",
"transcript": "Press 1 for sales..."
}
]
}/mapping/{id}/remap/{path}Re-map a specific path within an existing mapping job.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
| path | string | required | URL-encoded IVR tree path to remap (e.g., /1/3) |
Request
curl -X POST -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/remap/%2F1%2F3Response
{
"id": "map_abc123",
"remapPath": "/1/3",
"status": "running"
}/mapping/{id}/treeGet the IVR tree structure for a mapping job. Nodes carry enrichment fields (stepType, voicePrompt, menuLabel, spokenResponse, probe classification, audioUrl, duration, inputRequired) where available. When the job has no mapped tree yet, the endpoint returns 200 with an empty-state envelope { jobId, runId?, runNumber?, status, stats?, tree: null, reason, message } where reason is no_runs, no_steps, or in_progress. Branch on tree === null before reading root.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/treeResponse
{
"jobId": "map_abc123",
"runNumber": 3,
"root": {
"path": "/",
"stepType": "dtmf",
"transcript": "Welcome to Acme Corp. Press 1 for sales, 2 for support.",
"menuLabel": "Main menu",
"audioUrl": "https://audio.nopaque.co.uk/map_abc123/root.mp3",
"duration": 6.2,
"children": [
{
"path": "/1",
"dtmfOption": "1",
"stepType": "dtmf",
"menuLabel": "Sales",
"transcript": "Sales department..."
},
{
"path": "/2",
"dtmfOption": "2",
"stepType": "voice",
"voicePrompt": "Please describe your issue.",
"spokenResponse": "I need to reset my password.",
"probeCategory": "authentication",
"probeClassification": "weak",
"probeRationale": "Resets identity with only a postcode.",
"inputRequired": {
"type": "voice",
"description": "Spoken issue description"
},
"transcript": "Support department..."
}
]
}
}/mapping/{id}/runsList all runs for a mapping job. Runs may carry an optional callTelemetry object (schemaVersion 1) with nested telephony, quality, audio, cost, timing, mode, and per-turn detail. All telemetry fields are optional and may be absent.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/runsResponse
{
"jobId": "map_abc123",
"runs": [
{
"id": "run_def456",
"status": "completed",
"startedAt": "2026-04-10T12: 15: 00Z",
"completedAt": "2026-04-10T12: 20: 00Z"
}
],
"totalRuns": 1
}/mapping/{id}/pathsList all discovered paths in a mapping job with path rule overrides.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
Request
curl -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/pathsResponse
{
"jobId": "map_abc123",
"rules": [
{
"path": "/1",
"status": "completed",
"repeatBehavior": "skip"
},
{
"path": "/2",
"status": "completed",
"repeatBehavior": "explore-once"
}
],
"totalRules": 2
}/mapping/{id}/paths/{path}Update a path rule override for a specific path in a mapping job.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
| path | string | required | URL-encoded IVR tree path |
Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| repeatBehavior | string | optional | Repeat behavior: skip, explore-once, or explore-N |
Request
curl -X PATCH -H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"repeatBehavior":"explore-once"}' \
https://api.nopaque.co.uk/mapping/map_abc123/paths/%2F1Response
{
"path": "/1",
"repeatBehavior": "explore-once",
"updatedAt": "2026-04-10T12: 25: 00Z"
}/mapping/{id}/paths/{path}Delete a path rule override, reverting to default behavior.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
| path | string | required | URL-encoded IVR tree path |
Request
curl -X DELETE -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/paths/%2F1Response
{
"message": "Path rule deleted successfully"
}/mapping/{id}/runs/{runId}/probeTrigger on-demand security probe analysis on a completed mapping run. Queues probe steps and returns how many were enqueued.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Mapping job ID |
| runId | string | required | Run ID for the completed mapping run |
Request
curl -X POST -H "x-api-key: YOUR_API_KEY" \
https://api.nopaque.co.uk/mapping/map_abc123/runs/run_def456/probeResponse
{
"message": "Queued 3 security probe steps",
"probeCount": 3
}