Skip to main content
GET
Get app (poll registration)

Authorizations

Authorization
string
header
required

JWT login token tied to your Perfai user (not a separate API key). Obtain it via POST /api/v1/auth/token with your username and password (use the returned id_token) — the same login the web console performs. Carries org, user, and role; short-lived.

Path Parameters

appId
string
required

MongoDB ObjectId of the app (from GET /apps or POST /apps).

Response

The app.

appId
string
label
string
appUrl
string
basePath
string
registrationStatus
enum<string>

Onboarding state. Never FAILED. NEEDS_INPUT — onboarding stopped and is waiting for something only you can supply (reason says what: needs_login, out_of_credits, app_unreachable, …). Answer a login pause with POST /v1/apps/{appId}/account-setup. COMPLETED_PARTIAL — onboarding produced results, but part of it did not run (reason says why; needs_login means logged-in areas were not tested). INTERRUPTED — onboarding stopped on our side before producing a result. CANCELLED — a user stopped it. COMPLETED, COMPLETED_PARTIAL, INTERRUPTED and CANCELLED are terminal. Stop polling on NEEDS_INPUT too: nothing changes until you act.

Available options:
PENDING,
IN_PROGRESS,
NEEDS_INPUT,
COMPLETED,
COMPLETED_PARTIAL,
INTERRUPTED,
CANCELLED
reason
enum<string> | null

Why a task or app is in its state. Null when the state needs no explanation. New values may be added; show message for any you do not recognise.

Available options:
needs_login,
needs_roles,
needs_access,
needs_app_url,
needs_spec,
app_unreachable,
out_of_credits,
no_response,
paused,
partial_coverage,
our_side_error,
dependency_lost,
null
message
string

One sentence for the user — the same wording the console shows for this state.

Example:

"We hit a snag — we're on it. Your results so far are saved."

createdAt
string<date-time> | null
scheduleType
enum<string>

How often this app is re-tested automatically. Apps inherit your organization default at registration and fall back to nightly, so an app may be on a recurring cadence you did not request here — each run consumes credits. Change it in the console (Edit app); this API does not set it, matching the console prompt.

Available options:
none,
nightly,
custom,
weekly_saturday,
biweekly_saturday,
monthly_first
Example:

"nightly"