Skip to content

Profiles ​

A Profile stores reusable browser identity and login state. Pass profile_id to a DoAnything run to reuse it.

Current API ​

The backend does not expose POST /profiles creation or PATCH /profiles/{id}. Profiles are created or refreshed through interactive login:

http
POST   /api/v1/projects/{pid}/profiles/login
GET    /api/v1/projects/{pid}/profiles
GET    /api/v1/projects/{pid}/profiles/{profile_id}
GET    /api/v1/projects/{pid}/profiles/{profile_id}/login_state
POST   /api/v1/projects/{pid}/profiles/{profile_id}/confirm
DELETE /api/v1/projects/{pid}/profiles/{profile_id}

Start login with site_id and optional profile_id; the response includes profile_id, session_id, and live_url. The user completes login in the controlled browser, then the client calls confirm. site_id must be registered by the backend.

Use a Profile in a task ​

ts
const run = await qoni.doAnything.run({
  token,
  prompt: "Open the internal system and read today's tasks.",
  profileId: "prof_alice",
});

Profile responses expose metadata such as state, last_alive_at, last_used_at, and last_failure_reason; cookie contents are not returned.

Current /track/tracks has no profile_id field; the unpublished SDK repair candidate also rejects profileId. Do not copy the DoAnything Profile option into Track; see Track for the compatibility boundary.