API

Send requests to /api/v1 with the header Authorization: Bearer uxp_.... Create a key in your account. The limit is 60 requests a minute.

Start a run

curl -X POST $BASE/api/v1/runs \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"site":"SITE_ID","steps":20,"concurrency":3,"personas":["p01","p03"]}'

Leave out personas to use everyone enabled on the panel. Response: {"id":"r...","status":"queued","credits":2}

Methods

MethodPathWhat it does
GET/balanceCredit balance
GET/sitesYour sites, their ids and panels
GET/personasThe persona library
GET/runsLatest runs
POST/runsStart a run
GET/runs/{id}Status and results per persona
POST/runs/{id}/cancelCancel, unfinished credits come back

Errors

Format: {"error":{"code":"...","message":"..."}}

HTTPCodeMeaning
400no_personasNo persona picked, or an id is not on this site
400not_test_hostTest payment mode needs a start page on a test host
401unauthorizedMissing or invalid key
402insufficient_creditsNot enough credits
403domain_not_verifiedDomain not verified
404not_foundNothing like that on your account
409too_many_runsToo many runs in the queue
429rate_limitedRequest limit exceeded

What a run does to your site

Only GET requests to the verified domain. Forms are not sent and password and card fields stay empty, so a run never registers, signs in or pays. The exception is test payment mode, which you turn on for a test host. Notes come from a model, check them before you act.