Skip to content
Markets open

API reference

CLI tests

Caller-ID tests on real handsets.

13 operationsBase URL https://packetexchange.io/api/v1Postman collection

List your caller-ID tests

GET/api/v1/cli-tests

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Parameters

NameInTypeDescription
routeIdquerystring (uuid)-
blendRouteIdquerystring (uuid)-
statusquerystring-One of scheduled, pending, in_progress, completed, failed, not_tested, cancelled
cursorquerystring (uuid)-
limitqueryinteger-Default 25

Response 200

FieldTypeDescription
datarequiredobject[]-
idrequireddata[].idstring (uuid)-
routeIdrequireddata[].routeIdstring (uuid) | null-
blendRouteIdrequireddata[].blendRouteIdstring (uuid) | null-
displayClirequireddata[].displayClistringThe caller ID presented on the test call
testCountryrequireddata[].testCountrystring-
testNumberrequireddata[].testNumberstring | nullThe handset that received the call
statusrequireddata[].statusstring-One of scheduled, pending, dispatching, in_progress, completed, failed, not_tested, cancelled
recurrencerequireddata[].recurrencestring-
scheduledAtrequireddata[].scheduledAtstring (date-time) | nullISO-8601 timestamp (UTC)
reportedClirequireddata[].reportedClistring | nullWhat the handset actually displayed
displayedCorrectlyrequireddata[].displayedCorrectlyboolean | null-
resultNotesrequireddata[].resultNotesstring | null-
dispatchedAtrequireddata[].dispatchedAtstring (date-time) | nullISO-8601 timestamp (UTC)
completedAtrequireddata[].completedAtstring (date-time) | nullISO-8601 timestamp (UTC)
createdAtrequireddata[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
routerequireddata[].routeobject-
countryrequireddata[].route.countrystring | null-
destinationNamerequireddata[].route.destinationNamestring | nullThe listing name as a buyer reads it: generated by the platform, never the seller's text, and ending in the listing reference (e.g. "Niger Mobile · Ref 7K2Q", "A-Z Voice · Premium · Full CLI · Ref 3MX9"). Your own listings keep the name you gave them.
nextCursorrequiredstring | nullPass as cursor to fetch the next page; null on the last page.
hasMorerequiredbooleanTrue when another page exists.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Run a caller-ID test on a route

POST/api/v1/cli-tests

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)
Real traffic
Places a real test call to a handset. $0.50 per test, charged only if the call rang.

Places a real call to a test handset in the destination country and reports what caller ID it displayed. Give exactly one of routeId or blendRouteId; a blend runs one test per member route.

Billing: $0.50 per test, charged only if the call rang the handset (once per test). A call that never rings costs nothing. GET /cli-tests/quota returns the current price as costPerTest.

Request body (application/json)

FieldTypeDescription
routeIdstring (uuid)-
blendRouteIdstring (uuid)-
displayClirequiredstring-
testCountryrequiredstring-max 100 chars
testNumberstring-
scheduledAtstring (date-time)-
recurrencestring-default "none"One of none, daily, weekly

Response 201

FieldTypeDescription
datarequiredobject-
iddata.idstring (uuid)-
routeIddata.routeIdstring (uuid) | null-
blendRouteIddata.blendRouteIdstring (uuid)-
displayClidata.displayClistringThe caller ID presented on the test call
testCountrydata.testCountrystring-
testNumberdata.testNumberstring | nullThe handset that received the call
statusdata.statusstring-One of scheduled, pending, dispatching, in_progress, completed, failed, not_tested, cancelled
recurrencedata.recurrencestring-
scheduledAtdata.scheduledAtstring (date-time) | nullISO-8601 timestamp (UTC)
reportedClidata.reportedClistring | nullWhat the handset actually displayed
displayedCorrectlydata.displayedCorrectlyboolean | null-
resultNotesdata.resultNotesstring | null-
dispatchedAtdata.dispatchedAtstring (date-time) | nullISO-8601 timestamp (UTC)
completedAtdata.completedAtstring (date-time) | nullISO-8601 timestamp (UTC)
createdAtdata.createdAtstring (date-time)ISO-8601 timestamp (UTC)
testsdata.testsobject[]-
idrequireddata.tests[].idstring (uuid)-
routeIdrequireddata.tests[].routeIdstring (uuid) | null-
blendRouteIdrequireddata.tests[].blendRouteIdstring (uuid) | null-
displayClirequireddata.tests[].displayClistringThe caller ID presented on the test call
testCountryrequireddata.tests[].testCountrystring-
testNumberrequireddata.tests[].testNumberstring | nullThe handset that received the call
statusrequireddata.tests[].statusstring-One of scheduled, pending, dispatching, in_progress, completed, failed, not_tested, cancelled
recurrencerequireddata.tests[].recurrencestring-
scheduledAtrequireddata.tests[].scheduledAtstring (date-time) | nullISO-8601 timestamp (UTC)
reportedClirequireddata.tests[].reportedClistring | nullWhat the handset actually displayed
displayedCorrectlyrequireddata.tests[].displayedCorrectlyboolean | null-
resultNotesrequireddata.tests[].resultNotesstring | null-
dispatchedAtrequireddata.tests[].dispatchedAtstring (date-time) | nullISO-8601 timestamp (UTC)
completedAtrequireddata.tests[].completedAtstring (date-time) | nullISO-8601 timestamp (UTC)
createdAtrequireddata.tests[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
skippedTrunksdata.skippedTrunksany[]-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Check whether handset caller-ID testing is available

GET/api/v1/cli-tests/provider-status

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Response 200

FieldTypeDescription
datarequiredobject-
enabledrequireddata.enabledboolean-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List the countries with test handsets online

GET/api/v1/cli-tests/testable-destinations

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

All fields are null when availability could not be checked.

Response 200

FieldTypeDescription
datarequiredobject-
countriesrequireddata.countriesstring[] | null-
dialCodesrequireddata.dialCodesstring[] | null-
checkedAtrequireddata.checkedAtstring (date-time) | nullISO-8601 timestamp (UTC)

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get your caller-ID test quota and price

GET/api/v1/cli-tests/quota

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Response 200

FieldTypeDescription
datarequiredobject-
costPerTestrequireddata.costPerTestnumberUSD per test call, as a number
usedThisHourrequireddata.usedThisHourinteger-
limitPerHourrequireddata.limitPerHourinteger-
remainingrequireddata.remaininginteger-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Preview a route liveness test before starting it

POST/api/v1/cli-tests/batches/preview

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

For "Test these routes": checks each route you would test, one by one, with the same access rule as a single caller-ID test (voice, and public, yours or bought), and returns what the confirm step needs: which routes can be tested and why not, the most it can cost, handsets online per country, the expected time and your hourly quota. Writes nothing and charges nothing.

Request body (application/json)

FieldTypeDescription
routeIdsrequiredstring (uuid)[]-

Response 200

FieldTypeDescription
datarequiredobject-
enabledrequireddata.enabledbooleanFalse when the test handset network is not connected: a route test cannot start
routesrequireddata.routesobject[]-
idrequireddata.routes[].idstring (uuid)-
namerequireddata.routes[].namestring"A route" when the route is not one you may see
countryrequireddata.routes[].countrystring | null-
testablerequireddata.routes[].testableboolean-
reasonrequireddata.routes[].reasonstring | nullWhy it cannot be tested
testableCountrequireddata.testableCountinteger-
minRoutesrequireddata.minRoutesintegerSmallest route test (2). To test one route use POST /cli-tests.
maxRoutesrequireddata.maxRoutesintegerLargest route test (20 by default)
costPerTestrequireddata.costPerTestnumberUSD per route that rings (JSON number)
maxCostrequireddata.maxCostnumberUSD if every testable route rings (JSON number)
balancerequireddata.balancenumber | nullYour balance in USD (JSON number)
quotarequireddata.quotaobjectTest calls in the last hour against the hourly cap
usedThisHourrequireddata.quota.usedThisHourinteger-
capPerHourrequireddata.quota.capPerHourinteger-
remainingrequireddata.quota.remaininginteger-
countriesrequireddata.countriesobject[]-
countryrequireddata.countries[].countrystring-
routesrequireddata.countries[].routesinteger-
handsetsrequireddata.countries[].handsetsinteger | nullTest handsets online now; null when availability could not be read
parallelrequireddata.countries[].parallelintegerCalls that can run at once in this country (0 = none can start)
secondsrequireddata.countries[].secondsinteger | nullEstimated seconds to call every route in this country once
estimatedSecondsrequireddata.estimatedSecondsinteger | nullEstimated time for the whole test
noHandsetCountriesrequireddata.noHandsetCountriesstring[]Countries with no handset online now: their routes wait, then close as not tested
handsetWaitMinutesrequireddata.handsetWaitMinutesintegerHow long a route waits for a handset before it closes as not tested
gapSecondsrequireddata.gapSecondsintegerRest between two calls to the same handset
maxParallelrequireddata.maxParallelinteger-
runningBatchIdrequireddata.runningBatchIdstring (uuid) | nullYour route test already running, if any (only one may run at a time)

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List your route liveness tests

GET/api/v1/cli-tests/batches

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Newest first, each with its per-route rows.

Parameters

NameInTypeDescription
limitqueryinteger-Default 20

Response 200

FieldTypeDescription
datarequiredobject[]-
idrequireddata[].idstring (uuid)-
searchLabelrequireddata[].searchLabelstringThe description you gave the test, e.g. "Search: Pakistan, Voice"
statusrequireddata[].statusstring-One of running, finished, cancelled
displayClirequireddata[].displayClistringThe caller ID presented on every test call
routeCountrequireddata[].routeCountinteger-
costPerTestrequireddata[].costPerTestnumberUSD per route that rings (JSON number)
costCeilingrequireddata[].costCeilingnumberUSD if every route rings: the most this test can cost (JSON number)
chargedTotalrequireddata[].chargedTotalnumberUSD actually charged so far (JSON number)
createdAtrequireddata[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
finishedAtrequireddata[].finishedAtstring (date-time) | nullISO-8601 timestamp (UTC)
cancelledAtrequireddata[].cancelledAtstring (date-time) | nullISO-8601 timestamp (UTC)
activerequireddata[].activebooleanTrue while any route still needs a call. Poll GET /cli-tests/batches/{id} while this is true.
callerIdPendingrequireddata[].callerIdPendingintegerRoutes that rang and are still waiting for a caller-ID report
summaryrequireddata[].summaryobjectRoutes per state
queuedrequireddata[].summary.queuedinteger-
waiting_handsetrequireddata[].summary.waiting_handsetinteger-
callingrequireddata[].summary.callinginteger-
retryingrequireddata[].summary.retryinginteger-
rangrequireddata[].summary.ranginteger-
no_ringrequireddata[].summary.no_ringinteger-
not_testedrequireddata[].summary.not_testedinteger-
cancelledrequireddata[].summary.cancelledinteger-
itemsrequireddata[].itemsobject[]One row per route, in the order you submitted
testIdrequireddata[].items[].testIdstring (uuid)The ordinary caller-ID test behind this row (GET /cli-tests/{id})
routeIdrequireddata[].items[].routeIdstring (uuid)-
routeNamerequireddata[].items[].routeNamestringThe listing name as a buyer reads it: generated by the platform, never the seller's text, and ending in the listing reference (e.g. "Niger Mobile · Ref 7K2Q", "A-Z Voice · Premium · Full CLI · Ref 3MX9"). Your own listings keep the name you gave them.
countryrequireddata[].items[].countrystring-
positionrequireddata[].items[].positioninteger1-based place in the order you submitted
attemptsrequireddata[].items[].attemptsintegerCall attempts made so far
chargedrequireddata[].items[].chargednumberUSD actually charged for this route, as a JSON number: the test price if it rang, else 0
staterequireddata[].items[].statestringrang = the route is live (a handset rang). no_ring = the call was placed and did not ring. not_tested = we could not place a test (no handset, provider trouble): NOT a result for the route. queued / waiting_handset / calling / retrying are still in progress.One of queued, waiting_handset, calling, retrying, rang, no_ring, not_tested, cancelled
labelrequireddata[].items[].labelstringThe state in words, e.g. "Live, rang"
detailrequireddata[].items[].detailstring | nullOne plain sentence under the label
ringReasonrequireddata[].items[].ringReasonstring | nullWhy a call did not ring (the SIP-level reason in words)
callerIdrequireddata[].items[].callerIdobjectThe caller-ID verdict. It can arrive up to 24 hours after the ring.
staterequireddata[].items[].callerId.statestring-One of pending, match, partial, replaced, restricted, not_available
labelrequireddata[].items[].callerId.labelstring-
updatedAtrequireddata[].items[].updatedAtstring (date-time)ISO-8601 timestamp (UTC)

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Start a route liveness test on several routes

POST/api/v1/cli-tests/batches

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)
Real traffic
Places a real test call to a handset. $0.50 per test, charged only if the call rang.

Places one real test call over each route to a handset in its destination country, to show which routes are live right now, and reports the caller ID the handset displayed. Takes 2 to 20 voice routes (duplicates are merged). Calls are paced per country by the handsets online, and a route waits up to the handset wait time before it closes as not tested.

Billing: each route is charged the caller-ID test price ONLY if the call rang, once. Routes that do not ring, are not tested or are cancelled cost nothing. Your balance must cover routeCount x costPerTest before it starts.

Refusals: 400 VALIDATION_ERROR when the handset network is not connected, when fewer than 2 or more than the maximum routes are sent, when the test would pass your hourly test-call cap, when your balance does not cover the ceiling, or when any route cannot be tested (then error.details.routes lists { id, name, reason } for each and nothing starts). 409 CONFLICT when you already have a route test running. Preview with POST /cli-tests/batches/preview first.

Request body (application/json)

FieldTypeDescription
routeIdsrequiredstring (uuid)[]-
searchLabelrequiredstring-max 200 chars
displayClirequiredstring-

Response 201

FieldTypeDescription
datarequiredobjectSame fields as RouteTestBatch, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get a route liveness test and each route's result

GET/api/v1/cli-tests/batches/{id}

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Live per-route status. Poll while active is true (every few seconds is plenty); caller-ID verdicts can arrive for up to 24 hours after that.

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as RouteTestBatch, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Cancel a running route liveness test

POST/api/v1/cli-tests/batches/{id}/cancel

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Every route not yet called is cancelled and never charged. A call already ringing finishes normally and is billed only if it rang. A test that already finished answers 400 VALIDATION_ERROR.

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as RouteTestBatch, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Test a caller ID on your own switch

POST/api/v1/cli-tests/quick

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)
Real traffic
Places a real test call to a handset. $0.50 per test, charged only if the call rang.

For a switch not hosted here: give its SIP address and the caller ID to present. A private test-only route is set up for you, and the test is reported like any other: $0.50, charged only if the call rang the handset.

Request body (application/json)

FieldTypeDescription
sipEndpointrequiredstring-max 255 chars
sipPortinteger-1 to 65535
displayClirequiredstring-
testCountryrequiredstring-max 100 chars
testCountryCoderequiredstring-
testNumberstring-
scheduledAtstring (date-time)-
recurrencestring-One of none, daily, weekly
labelstring-max 120 chars

Response 201

FieldTypeDescription
datarequiredobject-
idrequireddata.idstring (uuid)-
routeIdrequireddata.routeIdstring (uuid)-
blendRouteIdrequireddata.blendRouteIdstring (uuid) | null-
displayClirequireddata.displayClistringThe caller ID presented on the test call
testCountryrequireddata.testCountrystring-
testNumberrequireddata.testNumberstring | nullThe handset that received the call
statusrequireddata.statusstring-One of scheduled, pending, dispatching, in_progress, completed, failed, not_tested, cancelled
recurrencerequireddata.recurrencestring-
scheduledAtrequireddata.scheduledAtstring (date-time) | nullISO-8601 timestamp (UTC)
reportedClirequireddata.reportedClistring | nullWhat the handset actually displayed
displayedCorrectlyrequireddata.displayedCorrectlyboolean | null-
resultNotesrequireddata.resultNotesstring | null-
dispatchedAtrequireddata.dispatchedAtstring (date-time) | nullISO-8601 timestamp (UTC)
completedAtrequireddata.completedAtstring (date-time) | nullISO-8601 timestamp (UTC)
createdAtrequireddata.createdAtstring (date-time)ISO-8601 timestamp (UTC)

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get a caller-ID test and its result

GET/api/v1/cli-tests/{id}

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as CliTest, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Cancel a pending or scheduled caller-ID test

POST/api/v1/cli-tests/{id}/cancel

Access
API key. Scoped keys need dialer:write.
Rate limit
100 requests per second (the default)

Tests already in progress or finished cannot be cancelled.

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as CliTest, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.