Skip to main content
On the setup intro, choose I’m an AI agent, create a key with setup:read and setup:run, then copy the instructions. Selecting the agent option creates no setup state and never mints a credential. Give the key to the agent through a secure channel. The copied instructions use the public API: the agent calls the operations below with the key as a Bearer token. Copying them sends nothing to Enrik.
  1. Check the key with GET /v1/me: its scopes must include setup:read and setup:run. Discover schemas from /v1/openapi.json. Read setup access, state and completion.
  2. Start only if needed. Optionally draft from a website or description, with an explicit locale.
  3. Show the proposed company profile to the human and wait for approval. Read fresh state and confirm using generation, expectedRevision and expectedProfileHash.
  4. Ask for setup choices. targetSegments requires icpProfiles; choosing nothing is valid. Key selection also acknowledges the handoff in the same transaction. Selection authorizes preparation of drafts for review, never automatic activation or discovery.
  5. Complete with mode: finish or mode: skip. Omit answers entirely, including an empty object: private answers belong to human accounts.
  6. Read completion and report what was saved and any remaining manual work.
Confirm saves the profile, setup state, milestones and receipt atomically. A saved nonblank website also starts standard company-twin research and commits its binding and dispatch intent in that transaction. Description-only profiles do not start website research. Where website research is not available to the workspace yet, Confirm still saves everything and starts none. Its answer’s research says which: { "status": "started" }, or not_started with the reason no_website or unavailable. A website that is not a usable web address is refused with 422 validation_error at profile.website. Company-profile drafting uses at most two model calls per command within Enrik’s shared ten-call workspace lifetime allowance. Humans, keys, resets and subsequent sponsored artifact work share that allowance. A timeout or uncertain transport does not refund a call or grant a second owner. Ordinary company-twin research retains its separate limits and accounting. Use a fresh UUID for each command and match the header to operationId. Retry a lost response with exactly the same body and UUID. A 409 whose error.code is conflict and whose error.details.code is onboarding_ai_in_progress means a draft is already running: wait error.details.retryAfterMs milliseconds and retry the same command. For any other 409, read fresh state, then check error.code and error.details.code (for example onboarding_setup_stale). Never invent fields, activate drafts, add target companies or contact third parties automatically. Artifact status is visible in the app. An agent reports the persisted choices; humans review resulting drafts in the app. Artifact preparation does not block completion. Keys cannot access handoff, private answers or other internal setup operations.